为什么在MSBuild AfterBuild任务期间找不到@(DocFileItem)?

时间:2010-06-28 05:11:49

标签: visual-studio msbuild msbuild-task

我正在尝试将文档XML文件作为构建后的XSLT转换进行后处理(使用新的XSLTransformation步骤),但构建失败并显示错误Unable to execute transformation. Could not find file 'C:\...\documentation.XML'。 构建完成后,文档XML文件在磁盘上显示正常,但在AfterBuild步骤中根本不存在:<Exec Command="dir $(ProjectDir)$(DocumentationFile)"/>找不到文件,<Exec Command="$(ProjectDir)$(DocumentationFile)"/>也没有。

XslTransformation步骤从名为AfterBuild的任务运行,并声明为取决于Compile步骤。显然我在这个任务被声明的方式中遗漏了一些东西,所以在文档XML文件完成之前它没有运行,但我无法弄清楚是什么。

2 个答案:

答案 0 :(得分:2)

根据http://social.msdn.microsoft.com/Forums/en-US/msbuild/thread/8a2f4af8-7a57-454f-aa7d-684f3f89acf3,这似乎是IDE构建系统中的一个错误:IDE构建在构建期间将$(DocumentationFile)重命名为.tmp文件,并将其重命名为正确的文档XML文件构建完成后。我无法想象为什么他们会这样做,除了个人满足于一个邪恶的项目经理,他现在必须现在笑得恶作剧,因为它读到这个......

答案 1 :(得分:0)

这个目标声明对我来说很好用:

<Target Name="AfterBuild">
  <Copy SourceFiles="$(ProjectDir)$(DocumentationFile)"
        DestinationFolder="C:\..\CopyDirectory"/>
</Target>

您应该尝试删除对Compile步骤的依赖。