В погоне за дополнительными улучшениями времени сборки я обнаружил, что файлы .btproj и, следовательно, все другие проекты, которые зависят от них, перестраиваются (частично) при каждой добавочной сборке. Отслеживая все это до BizTalkCommon.targets, я обнаружил, что он выполняет двухпроходную компиляцию сборки, но только первый проход учитывает уже созданные артефакты, тем самым нарушая инкрементную часть цепочки зависимостей. Цели нарушения можно увидеть в BizTalkCommon.targets (строка 228):
<!-- Delete the assembly and rerun the build process -->
<Target Name="SecondPass"
Condition="$(SecondBuild)!=true and $(TempAssemblyOnly)!=true">
<Delete Files="@(IntermediateAssembly)" />
<MSBuild Projects="$(MSBuildProjectFile)" Properties="SecondBuild=true"/>
</Target>
Я понимаю, что существует причина для двухпроходной сборки, но просто не могу поверить, что невозможно будет указать соответствующие входы и выходы для цели для правильной обработки инкрементных сборок.
Кто-нибудь знает, существует ли патч для файла .targets, или есть еще одна веская причина, по которой инкрементные сборки не поддерживаются?