复制在构建后过程中失败

时间:2011-12-06 13:57:48

标签: visual-studio-2008 post-build-event

我正在使用Visual Studio 2008编写ASP.NET Web应用程序。 除了以下项目之外,该项目与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 ==========

我确定语法是正确的,因为我可以在命令窗口中执行post-build命令:

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

当我手动执行该命令时,该命令有效,那么为什么它在构建过程中失败呢?

1 个答案:

答案 0 :(得分:6)

对于中间构建,当在与输出路径指定的目录相同的目录中生成XML文档文件时,Visual Studio使用的基础msbuild任务存在缺陷。 / p>

要修复它,您需要指定其他目录,例如:

enter image description here

并相应地更改构建后的复制命令,如下所示:

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