Я исправляю ошибку в процессе сборки, которая иногда возникает, но я не могу воспроизвести ее напрямую. Я использую 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
, что вызывает его срабатывание и, возможно, на что следует обращать внимание при отладке подобной ситуации (версии сборки, временные метки и т. д.). ?)