it-roy-ru.com

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

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

Ранее я сделал задачу PostBuildEvent в .csproj (MSBuild-файл):

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

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

64
Dao

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

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

Смотрите MSDN .

99
Oded

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

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

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

17
Matthew Piatt

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

Это сделает свое дело.

4
user3110417
  1. Добавьте файл в ваш проект.
  2. Перейдите в Свойства этого файла.
  3. Установите «Build Action» на «Встроенный ресурс».
  4. Установите «Копировать в выходной каталог» на «Копировать всегда».
3
5ervant

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

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

0
goku_da_master

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

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

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

Duh.

0
William T. Mallard

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

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

0
Joel