我正在调试我的构建过程中偶尔发生的错误,但我无法直接重现它。我正在将 msbuild 与 teamcity 一起使用。
我有一个这样的依赖层次结构:
Some.Interop.dll
Dependency-> SharedDllABC.dll
SomeService.exe
Depenendcy-> Some.Interop
通常最终的服务可执行文件进入其发布目录:
Some.Interop
SharedDllABC.Dll
ServiceExectuable.exe
但是,我可以在我们的 msbuild 日志中看到,有时在构建所有内容后的增量清理过程中会删除三级依赖项,从而导致:
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
什么,是什么导致它启动,也许在调试这样的情况时我应该寻找什么(程序集版本、时间戳等?)