Ошибка копирования во время процесса пост-сборки - PullRequest
4 голосов
/ 06 декабря 2011

Я пишу веб-приложение ASP.NET с использованием Visual Studio 2008. Проект в основном не отличается от стандартного пустого проекта, который предоставляет Visual Studio, за исключением:

  • В Свойствах-> Построить-> Вывод, «файл документации XML» проверен и установлен на «bin \ MyProject.XML»
  • В Свойствах-> События сборки, «Командная строка события после сборки:» установлена ​​на copy /y "$(TargetDir)$(TargetName).XML" "C:\TEMP\"

Когда я собираю проект в первый раз или перестраиваюсь, процесс сборки завершается успешно.Однако, если я попытаюсь выполнить сборку в любое время после этого, процесс сборки завершится с этим сообщением:

------ Build started: Project: MyProject, Configuration: Debug Any CPU ------
MyProject -> C:\Projects\MyProject\MyProject\bin\MyProject.dll
copy /y "C:\Projects\MyProject\MyProject\bin\MyProject.XML" "C:\TEMP\"
The system cannot find the file specified.
c:\WINDOWS\Microsoft.NET\Framework\v3.5\Microsoft.Common.targets(3397,13): error MSB3073: The command "copy /y "C:\Projects\MyProject\MyProject\bin\MyProject.XML" "C:\TEMP\"" exited with code 1.
Done building project "MyProject.csproj" -- FAILED.
========== Build: 0 succeeded or up-to-date, 1 failed, 0 skipped ==========

Я уверен, что синтаксис правильный, потому что я могу выполнить команду после сборки вокно команды:

C:\>copy /y "C:\Projects\MyProject\MyProject\bin\MyProject.XML" "C:\TEMP\"
        1 file(s) copied.

Команда работает, когда я делаю это вручную, так почему же она не работает, когда она является частью процесса сборки?

1 Ответ

6 голосов
/ 09 декабря 2011

Существует ошибка в базовых задачах msbuild, которые используются Visual Studio, когда файл документации XML создается в том же каталоге, что и указанный в качестве выходного пути , для промежуточных сборок.

Чтобы исправить это, вам нужно указать другой каталог, например, такой:

enter image description here

и соответственно изменить команду копирования после сборки, например:

copy /y "C:\Projects\MyProject\MyProject\docbin\Debug\MyProject.XML" "C:\TEMP\"
...