Я отлаживаю ошибку в процессе сборки, которая иногда случается, но я не могу напрямую ее воспроизвести. Я использую msbuild с teamcity.
У меня есть иерархия зависимостей:
Some.Interop.dll
Dependency-> SharedDllABC.dll
SomeService.exe
Depenendcy-> Some.Interop
Обычно конечная служба exectuable попадает в ее каталог выпуска:
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 он правильно копируется, а затем инкрементная очистка не удаляет его.
Я думаю, что incrementeal clean от этот пост должен очищать dll, которые были созданы из предыдущих сборников, но это не объясняет, как эта dll не создавался, когда большую часть времени он это делал. В визуальной студии это всегда работает.
Я предполагаю, что просто хочу знать, что именно есть Incremental clean
, что заставляет его ударить, и, может быть, какие вещи я должен искать при отладке подобной ситуации (версии сборки, временные метки и т.д.?)