Файл копии MsBuild после сборки

Я хочу скопировать xml файл из основного каталога в bin\Debug после создания проекта, но мое решение не работает. Я отредактировал файл .csproj и добавил:

<Target Name="AfterBuild">
     <Copy SourceFiles="Controllers.xml" DestinationFolder="\bin\Debug" ContinueOnError="true" />
</Target>

Что я делаю неправильно? Сборка выполнена успешно.

Ответы

Ответ 1

Ваша папка назначения (скорее всего) неверна. Если вы укажете его с ведущей обратной косой чертой, на самом деле это всего лишь короткая форма для <current-drive-letter>\bin\Debug (что делает ее фактически абсолютным путем, например C:\bin\Debug).

Либо используйте bin\Debug, либо еще лучше используйте переменную OutputPath, которая настроена на bin\Debug или bin\Release в зависимости от вашей конфигурации сборки.

Пример:

<Target Name="AfterBuild">
     <Copy SourceFiles="Controllers.xml" DestinationFolder="$(OutputPath)" ContinueOnError="true" />
</Target>

Ответ 2

Является ли xml файл в вашем проекте?  Тогда одним из его свойств является CopyToOutputDirectory. Установите его в CopyAlways, и когда проект будет создан, файл будет скопирован в bin\debug.

Ответ 3

Вы должны указать полный путь. Я подозреваю, что задача копирования MsBuild выполняется из "Пути по умолчанию" Visual Studio, и файл не найден. Кроме того, вы, скорее всего, хотите, чтобы файл попал в целевой каталог сборки.

<Target Name="AfterBuild">
    <Copy SourceFiles="$(ProjectDir)Controllers.xml" DestinationFolder="$(TargetDir)" ContinueOnError="true" />
</Target>