什么是msbuild中的增量清理以及何时触发?

dev*_*rts 19 msbuild teamcity visual-studio-2010

我正在调试我的构建过程中偶尔发生的错误,但我无法直接重现它.我正在使用msbuild和teamcity.

我有一个这样的依赖层次结构:

Some.Interop.dll
   Dependency-> SharedDllABC.dll

SomeService.exe
   Depenendcy-> Some.Interop
Run Code Online (Sandbox Code Playgroud)

通常,最终服务exectuable进入其发布目录:

Some.Interop
SharedDllABC.Dll
ServiceExectuable.exe
Run Code Online (Sandbox Code Playgroud)

但是我可以在我们的msbuild日志中看到,在构建完所有内容后,有时会在Incremental Clean期间删除三级依赖项,从而导致:

Some.Interop
ServiceExectuable.exe
Run Code Online (Sandbox Code Playgroud)

您可以在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
Run Code Online (Sandbox Code Playgroud)

这是我的直接msbuild输出,我刚刚更改了项目名称/ dll名称以匹配我的示例.当这个增量清洁已经发生时,SomeService.csproj已经建成了.你可以看到它没有被复制.但是在其他msbuild日志中,它会被正确复制,然后增量清理不会删除它.

我认为从这篇文章中增加清理应该是清理从以前版本创建的dll,但这并不能解释这个dll在大多数情况下是如何构建的.在视觉工作室,这总是有效.

我想我只是想知道究竟是Incremental clean什么,是什么导致它开始,也许在调试这样的情况时我应该寻找什么样的东西(汇编版本,时间戳等?)

Lis*_*rst 3

请尝试以下操作:

添加:

<Target Name="IncrementalClean" />
Run Code Online (Sandbox Code Playgroud)

到所有项目中包含的 .targets 文件。

来自--> https://github.com/Microsoft/msbuild/issues/1054