复制:在生成后过程中失败

Copy Failed during post-build process

提问人:Kevin 提问时间:12/6/2011 更新时间:4/3/2012 访问量:7529

问:

我正在使用 Visual Studio 2008 编写 ASP.NET Web 应用程序。 该项目与 Visual Studio 提供的默认空项目基本没有变化,但以下情况除外:

  • 在 Properties->Build->Output 中,“XML 文档文件”被选中并设置为“bin\MyProject.XML”
  • 在 Properties->Build Events 中,“Post-build event command line:” 设置为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.

当我手动执行该命令时,该命令有效,那么为什么它是构建过程的一部分时会失败呢?

visual-studio-2008 生成后事件

评论


答:

6赞 Simon Mourier 12/9/2011 #1

当 XML 文档文件在与指定为中间生成的输出路径的目录相同的目录中生成时,Visual Studio 使用的基础 msbuild 任务中存在一个缺陷。

要修复它,您需要指定一个不同的目录,例如,如下所示:

enter image description here

并相应地更改生成后复制命令,如下所示:

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

评论

1赞 Kevin 12/9/2011
谢谢,你解决了我的问题!你也给了我足够的信息,让我找到和我有同样问题的人。在 Stackoverflow 和 Visual Studio 的反馈站点上。