Visual studio Visual Studio增量生成:创建XML文档文件太晚

Visual studio Visual Studio增量生成:创建XML文档文件太晚,visual-studio,visual-studio-2005,msbuild,Visual Studio,Visual Studio 2005,Msbuild,我有一个VisualStudio2005的DLL项目,它打开了“XML文档文件”。 无论何时执行增量生成,在生成后事件执行期间,输出目录中都没有XML文档文件 如果在生成后事件期间暂停生成(使用来自的sleep实用程序),则可以在输出目录中看到名为vs5BB5.tmp的文件。但在完成后期构建事件(以及“后期构建”目标,因为我有一些自定义设置)之前,此文件不会重命名为MyLib.xml 对于Studio中的干净构建和从命令行启动的MSBuild,一切正常-XML文档文件在生成后事件之前创建 为什么

我有一个VisualStudio2005的DLL项目,它打开了“XML文档文件”。 无论何时执行增量生成,在生成后事件执行期间,输出目录中都没有XML文档文件

如果在生成后事件期间暂停生成(使用来自的sleep实用程序),则可以在输出目录中看到名为vs5BB5.tmp的文件。但在完成后期构建事件(以及“后期构建”目标,因为我有一些自定义设置)之前,此文件不会重命名为MyLib.xml

对于Studio中的干净构建和从命令行启动的MSBuild,一切正常-XML文档文件在生成后事件之前创建


为什么会发生这种情况,以及如何修复增量构建?

也有同样的问题。这是VisualStudio和增量构建中的一个已知问题。看

我用条件xcopy解决了这个问题,如下所示:


如果存在“$(TargetDir)$(TargetName).xml”xcopy$(TargetDir)$(TargetName).xml$(ProjectDir)…\bin\/C/I/R/Y


我自己也有这个问题

我发现xml文件名为.tmp文件,所以您可以将这个tmp文件复制到您想要的地方,这只是一个有点“混乱”的工作

我还很想为自己编写一个命令行工具,称为:-

WaitForThenCopy <source path> <target path> <milliseconds to wait>
WaitForThenCopy

唯一的问题是它必须是非阻塞的,您不知道它是否工作。

我使用一个简单的批处理文件来进行复制,而不是使用默认的copy命令来检测tmp文件并复制/重命名它

REM There is a bug in VS where the xml documentation is written to a tmp file
REM during incremental builds, preventing access during post-build events.
REM See http://connect.microsoft.com/VisualStudio/feedback/details/470485/strange-file-not-found-error-xml-documentation-file-renamed-during-incremental-build
REM As a work around for following script tries to catch this situation and copys/remanes
REM this tmp-file instead.

REM .SYNOPSIS
REM CopyXmlDocumentation "X:\path\to\source.xml" "Y:\target\dir"

if exist "%~1%" (
  REM if the file exists, copy it as-is
  copy /Y "%~1" "%~2"
) else (
  REM else we try to copy the .tmp file and rename it to the desired target name
  REM we assume that the tmp file is named "vsXXXX.tmp" where XXXX is an arbitrary string
  copy /Y "%~d1\%~p1\vs*.tmp" "%~2\%~n1%~x1"
)

谢谢你的回答。不幸的是,由于“悬赏未解决”问题,我无法将其标记为已接受()。