Копирование файлов в папку приложения во время компиляции - PullRequest
76 голосов
/ 14 апреля 2009

Если у меня есть файлы, которые я хочу скопировать из своего проекта в папку .\bin\debug\ при компиляции, то, похоже, мне нужно поместить их в корень проекта. Помещение их в подпапку, кажется, копирует их в папку .\bin\debug\ в той же структуре, в которой они хранятся.

Есть ли способ избежать этого?

Просто чтобы прояснить: если у меня есть MyFirstConfigFile.txt и MySecondConfigFile.txt в папке ConfigFiles, и я установил их Копировать на вывод равным Копировать ... затем они появляются в папке .\bin\debug\ConfigFiles\. Я хочу, чтобы они появлялись в папке .\bin\debug\.

Ответы [ 7 ]

77 голосов
/ 14 апреля 2009

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

Вот макрос пост-сборки, который, я думаю, сработает, скопировав все файлы в каталоге с именем Configuration в корневую папку сборки:

copy $(ProjectDir)Configuration\* $(ProjectDir)$(OutDir)
46 голосов
/ 14 апреля 2009

Вы можете использовать задачу MSBuild на вашем csproj, вот так.

Отредактируйте файл csproj

  <Target Name="AfterBuild">
    <Copy SourceFiles="$(OutputPath)yourfiles" DestinationFolder="$(YourVariable)" ContinueOnError="true" />
  </Target>
30 голосов
/ 30 октября 2014

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

Build action = Content

и

Copy to Output Directory = Copy if newer (например)

Для ссылки перетащите файл из проводника Windows в проводник решений, удерживая клавиши Shift и Control.

enter image description here

1 голос
/ 14 апреля 2009

Вы хотите использовать событие Post-Build в своем проекте. Вы можете указать выходные данные там, и есть макро значения для часто используемых вещей, таких как путь проекта, имя элемента и т. Д.

0 голосов
/ 08 декабря 2018

копировать из подпапки в подпапку

 if not exist "$(ProjectDir)$(OutDir)subfolder" mkdir "$(ProjectDir)$(OutDir)subfolder"

 copy "$(ProjectDir)subfolder\"  "$(ProjectDir)$(OutDir)subfolder\"
0 голосов
/ 14 августа 2012

Я нашел этот вопрос в поиске «копировать файлы в папку приложения во время компиляции». Похоже, OP уже отсортировал это, но если вы этого не сделаете:

В Visual Studio щелкните файл правой кнопкой мыши, выберите свойства, затем измените параметр «копировать в вывод» на «всегда». Смотри http://msdn.microsoft.com/en-us/library/0c6xyb66.aspx

0 голосов
/ 14 апреля 2009

Вы можете использовать событие PostBuild проекта. После завершения сборки вы можете запустить пакетный файл DOS и скопировать нужные файлы в нужную папку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...