MsBuild копировать файл после сборки

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

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

что я делаю не так? Сборка прошла успешно.

3 ответов


ваша папка назначения (скорее всего) неправильно. Если вы укажете его с ведущей обратной косой чертой, это на самом деле просто короткая форма для <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>

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


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

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