20

ビルド プロセスで時折発生するバグをデバッグしていますが、直接再現することはできません。teamcity で msbuild を使用しています。

次のような依存関係階層があります。

Some.Interop.dll
   Dependency-> SharedDllABC.dll

SomeService.exe
   Depenendcy-> Some.Interop

通常、最終的なサービス実行可能ファイルはリリース ディレクトリに置かれます。

Some.Interop
SharedDllABC.Dll
ServiceExectuable.exe

ただし、msbuild ログで、すべてがビルドされた後、インクリメンタル クリーン中に 3 番目の依存関係が削除されることがあることを確認できます。

Some.Interop
ServiceExectuable.exe

msbuild ログで確認できます。

[src\SomeService\SomeService.csproj] _TimeStampAfterCompile
[12:32:43]:  [src\SomeService\SomeService.csproj] Compile

// some other targets

[12:32:43]:  [src\SomeService\SomeService.csproj] _CopyFilesMarkedCopyLocal
[12:32:43]:      [_CopyFilesMarkedCopyLocal] Copy
[12:32:43]:          [Copy] Copying file from "C:Projects\trunk\src\Some.Interop\bin\Release\Some.Interop.dll" to "bin\Release\Some.Interop.dll".

// some other targets

[src\Project\SomeService\SomeService.csproj] IncrementalClean
[18:54:42]:         [IncrementalClean] Delete
[18:54:42]:             [Delete] Deleting file "C:\Projects\trunk\src\Project\SomeService\bin\Release\SharedDllABC.dll".
[18:54:42]:             [Delete] Deleting file "C:\Projects\trunk\src\Project\SomeServiceService\bin\Release\SharedDllABC.pdb".
[18:54:42]:     [src\Project\SomeService\SomeService.csproj] CoreBuild
[18:54:42]:     [src\Project\SomeService\SomeService.csproj] AfterBuild
[18:54:42]:     [src\Project\SomeService\SomeService.csproj] Build

これは私の直接の msbuild 出力です。プロジェクト名/dll 名を私の例に合わせて変更しただけです。このインクリメンタル クリーンが発生するまでに、SomeService.csprojはすでに構築されています。コピーされていないことがわかります。ただし、他の msbuild ログでは適切にコピーされ、増分クリーンでは削除されません。

この投稿のインクリメンタル クリーンは、以前のビルドから作成された dll をクリーンアップすることになっていると思いますが、ほとんどの場合、この dll がビルドされなかった理由を説明していません。ビジュアル スタジオでは、これは常に同様に機能します。

Incremental clean正確には とは何か、それが発生する原因、およびこのような状況をデバッグするときに何を探す必要があるか (アセンブリのバージョン、タイムスタンプなど)を知りたいだけだと思います。

4

4 に答える 4