2009-07-16 12 views
4

"XMLドキュメント作成ファイル"が有効になっているVisual Studio 2005のDLLプロジェクトがあります。 増分ビルドを行うたびに、ビルド後のイベント実行中に出力ディレクトリにXMLドキュメンテーションファイルがありません。Visual Studioインクリメンタルビルド:XMLドキュメントファイルが遅すぎます

ビルド後のイベント中に(sleepユーティリティを使用してGnuWin32 CoreUtilsから)ビルドを一時停止すると、そのファイルが出力ディレクトリにvs5BB5.tmpのような名前で表示されます。しかし、このファイルはビルド後のイベント(およびそこにいくつかのカスタマイズがあるので "AfterBuild"ターゲット)が終了するまでMyLib.xmlに名前が変更されません。

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

1

ただ、この問題を自分で持つ....私が見つけたもの

は、ということであるXMLファイル名は.tmpファイルになりますので、このtmpファイルを必要な場所にコピーすることができます。

私はまた、非常に自分自身のようなものと呼ばれるコマンドラインツールのthatsを書くように誘惑よ

: -

唯一の問題、それは働いていた場合、それは非ブロッキングでなければならないであろうと、あなたが知っているだろうか、またはない。

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" 
) 
関連する問題