У меня есть несколько файлов dll в папке \ lib папки моего проекта. На странице свойств dll я выбрал «Действие сборки» как «Содержимое» и «Копировать в выходной каталог» как «Всегда копировать».
После сборки я фактически копирую dll, но они находятся внутри \ bin \ Release \ lib, а не в \ bin \ Release.
Есть ли способ скопировать файлы dll в \ bin \ Release (а не в \ bin \ Release \ lib) без написания сценария после сборки или использования nant и т. Д.?
источник
ContentWithTargetPath
инкрементальной компиляции breaks (проверено на VS 2017 15.9.9)Сохраните их
$(ProjectDir)\Lib
, но добавьте эти файлы « как ссылку » в корень вашего .csproj. Теперь они будут скопированы в bin \ Debug (или любую другую выходную папку), не будучи в lib.РЕДАКТИРОВАТЬ: этот ответ был написан еще тогда, когда ContentWithTargetPath не был доступен в версиях VS / MSBuild, которые я использовал. Оставьте этот ответ здесь для людей, которым, возможно, придется использовать более старую версию VS. Пожалуйста, перестаньте это комментировать, мы все знаем, что теперь есть способы получше.
источник
Если ваша основная цель - включить библиотеки DLL, не загромождая корневой каталог проекта, другое решение - переместить библиотеки DLL в отдельный общий проект и добавить его в качестве ссылки в исходный проект.
(Обратите внимание, что этот пост не дает прямого ответа на этот вопрос, так как он не сохраняет структуру папок и проекта, но я нашел этот подход полезным, потому что я смог реструктурировать свой проект в моем случае и потому, что я хотел избежать некоторых из недостатки других подходов здесь.)
меры
Solution -> Add -> New Project -> Shared Project
Build Action: Content
иCopy to Output Directory: Copy Always
)References -> Add Reference -> Shared Projects
Настройка выглядит так:
источник
Добавьте dll-файлы в качестве ссылки на проект, а по ссылке установите «Копировать локально» в значение true.
источник
Если вам нужно скопировать файлы из каталога Libs в корневую папку VS2017:
В любую другую папку, включая папку Libs (RecursiveDir)
источник
В VisualStudio 2015 кажется, что если библиотеки DLL, которые вы «добавляете со ссылкой», находятся в подпапке того же проекта, они автоматически помещаются в папку, а вывод также помещается в папку, как вы видели.
Если библиотеки DLL находятся в другом проекте или каталоге на диске, а не во вложенной папке проекта , вы можете «Добавить со ссылкой», и они будут помещены в корневой каталог.
источник
Альтернативный метод - просто оставить элементы как тип
None
. В обозревателе решений щелкните те, которые вы хотите развернуть, и установите дляContent
свойства значениеTrue
.Примечание: я делал это в VS2019, и все может меняться от версии к версии.
Чтобы это заработало, щелкните свой проект правой кнопкой мыши и выберите «Выгрузить проект». Затем щелкните правой кнопкой мыши выгруженный проект и выберите «Изменить имя_проекта.vcxproj».
В редакторе пройдите до конца файла и вставьте эту цель прямо перед конечным
</Project>
тегом:Теперь щелкните правой кнопкой мыши выгруженный проект и выберите «Перезагрузить проект». Выберите, чтобы сохранить и закрыть, если вам будет предложено.
Я также установил
OutputDirectory
:$(SolutionDir)bin\$(Configuration)\$(Platform)\
и
IntermediateDirectory
к:$(SolutionDir)obj\$(Configuration)\$(ProjectName)\$(Platform)\
на странице Project Properties General. Результат будет помещен в папку «bin», а промежуточные продукты - в папку «obj» в корне вашего решения.
Примечание.
$(SolutionDir)
Не определяется при запуске MSBuild из командной строки. Есть уловка, которую вы можете использовать, чтобы определить это для папки, в которой находится файл .sln, с помощью GetDirectoryNameOfFileAbove. (оставлено в качестве упражнения для читателя). Кроме того, похоже, что в 2019 году они все равно правильно обрабатывают это в командной строке. Да :) В$(SolutionDir)
конце есть обратная косая черта, поэтому после нее нет. Результат каждого должен иметь обратную косую черту в конце.Теперь, если у вас есть версия Pro или выше, пожалуйста, не делайте этого каждый раз, когда вам нужно создать проект. Это было бы глупо. Вместо этого, когда ваш проект настроен так, как вам нравится, выберите
Project -> Export Template
. Вы даете ему имя, и в следующий раз, когда захотите создать такой же проект, просто выберите это имя в диалоговом окне «Новый проект». (В более старой версии, я думаю, это былоFiles -> Export Teamplate...
.)источник
У меня была такая же проблема с Visual Studio 2010 / C # Project.
Для сборок (то есть с интерфейсом .NET) используйте папку «Ссылки» в вашем проекте в обозревателе решений. Щелкните его правой кнопкой мыши, выберите «Добавить существующий элемент» и найдите сборку .dll.
Общие файлы .dll можно поместить в подпапку (как упоминалось выше "\ lib") и в свойствах выбрать:
У меня это сработало именно так, как я и хотел - во время сборки .DLL копируются в выходной каталог без подпапки "\ lib".
источник