2009-07-16 83 views
4

我有一個Visual Studio 2005的「XML文檔」打開的DLL項目。 無論何時執行增量構建,在構建後事件執行期間,輸出目錄中都沒有XML文檔文件。Visual Studio增量構建:XML文檔文件創建得太遲

如果我在生成後事件(使用GnuWin32 CoreUtils的睡眠工具)期間暫停構建,我可以在輸出目錄中看到類似vs5BB5.tmp這樣的文件。但是這個文件沒有重新命名爲MyLib.xml,直到生成後事件(和「AfterBuild」目標,因爲我有一些自定義)完成。

對於在Studio中完成的構建以及從命令行啓動的MSBuild,一切都按預期工作 - 在生成後事件之前創建XML文檔文件。

爲什麼會發生這種情況,以及如何修復增量構建?

回答

3

只是有同樣的問題。這是Visual Studio和增量構建的已知問題。見this post on microsoft connect

我像下面的一個條件XCOPY解決它:

if exist "$(TargetDir)$(TargetName).xml" xcopy $(TargetDir)$(TargetName).xml $(ProjectDir)......\bin\ /C /I /R /Y

SF

+0

謝謝你的回答。 不幸的是,由於「未解決的獎勵」問題,我無法將其標記爲已接受(http://meta.stackexchange.com/questions/1413)。 – VladV 2009-08-16 11:55:04

1

只要有這個問題我自己....

我發現的是,XML文件被命名爲.tmp文件,因此您可以將此tmp文件複製到您想要的位置,它只是一個「雜亂」的解決方法。

我也挺動心自己寫一個命令行工具,這就是所謂的類似: -

唯一的問題是它必須是非阻塞,你不會知道它的工作或不。

1

我正在使用一個簡單的批處理文件來執行復制操作,而不是使用默認複製命令來檢測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" 
)