VS2010 Как включить файлы в проект, чтобы автоматически копировать их в выходной каталог при сборке или публикации - PullRequest
66 голосов
/ 04 января 2011

Задача состоит в том, чтобы сформировать проект Visual Studio 2010 таким образом, чтобы во время любой сборки или публикации некоторая утилита foo.exe была скопирована в выходной каталог (bin).

Ранее я выполнил задачу PostBuildEvent в .csproj (MSBuild-file):

<PropertyGroup>
  <PostBuildEvent>
    Copy "$(SolutionDir)Tools\foo.exe" "$(ProjectDir)$(OutDir)foo.exe"
  </PostBuildEvent>
</PropertyGroup>

Но это не универсально.Во время публикации (Visual Studio 2010) foo.exe появляется в каталоге bin, но не копируется в выходной каталог публикации.Может быть, я все делаю неправильно, и есть стандартный механизм для включения файлов в проекты, которые будут позже, во время сборки или публикации, скопированы в bin?

Ответы [ 7 ]

100 голосов
/ 04 января 2011

Существует и не зависит от событий после сборки.

Добавьте файл в свой проект, затем в свойствах file выберите в разделе «Копировать в выходной каталог» либо «Копировать».Всегда "или" Копировать, если новее ".

См. MSDN .

18 голосов
/ 03 марта 2014

У меня есть только необходимость загружать файлы во время сборки, поэтому я просто добавил запись командной строки события после сборки, например:

Copy /Y "$(SolutionDir)Third Party\SomeLibrary\*" "$(TargetDir)"

Вы можете установить это, щелкнув правой кнопкой мыши ваш проект вОбозреватель решений, затем Свойства> События сборки

4 голосов
/ 17 декабря 2013

В обозревателе решений выберите файлы, которые вы хотите скопировать в выходной каталог, и назначьте два свойства: - Создать действие = Содержимое - Копировать в выходной каталог = Копировать всегда

Это поможет.

3 голосов
/ 27 июня 2017
  1. Добавьте файл в ваш проект.
  2. Перейдите в свойства этого файла.
  3. Установите для параметра «Действия при построении» значение «Встроенный ресурс».
  4. Установить »Копировать в выходной каталог "Копировать всегда.
0 голосов
/ 07 июня 2017

Для того, чтобы мои товарищи по нейронным заболеваниям могли случайно столкнуться с этим здесь, я предположил, что для веб-проектов, если связанный файл является внешним файлом .config, то «выходной каталог» будет тем же каталогом, что и web.configживет, то есть корень вашего веб-проекта.Оглядываясь назад, совершенно неудивительно, что он копирует связанный файл в папку root / bin.

Итак, если это файл, включающий appSettings, открытый тег вашего web.config будет

<appSettings file=".\bin\includedAppSettingsFile.config">

Дух.

0 голосов
/ 27 апреля 2016

Попробуйте добавить ссылку на отсутствующие библиотеки DLL из вашего сервиса / веб-проекта напрямую .Добавление ссылок на другой проект мне не помогло.

Мне нужно было делать это только при публикации моего веб-приложения, поскольку оно не копировало все необходимые библиотеки DLL.

0 голосов
/ 17 июля 2013

В моем случае установка Copy to Output Directory на Copy Always и Build не сработала, в то время как Rebuild сделала.

Надеюсь, это кому-нибудь поможет!

...