MsBuild скопировать файл после сборки
Я хочу скопировать XML-файл из основного каталога в bin\Debug
после создания проекта, но мое решение не работает. Я редактировал .csproj
файл и добавил:
<Target Name="AfterBuild">
<Copy SourceFiles="Controllers.xml" DestinationFolder="\bin\Debug" 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>