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>
Другие вопросы по тегам