Может быть, если вы обернули вещи в цель верхнего уровня, используя одну или несколько CallTargets, то вы могли бы использовать задачу <OnError .../>
для запуска конечной цели?
<Target Name="CompleteBuild">
<CallTarget Targets="Target1"/>
<CallTarget Targets="Target2"/>
<CallTarget Targets="FinalTarget"/>
<OnError ExecuteTargets="FinalTarget"/>
</Target>