성공 또는 실패 여부에 관계없이 다른 모든 대상을 실행 한 후에 특정 대상을 실행할 수 있습니까?"마지막으로"MSBuild 대상
try...finally equivalent in MsBuild은 관련이 있지만 작은 대상 그룹 만 처리합니다. 수십 개의 하위 빌드가있는 전체 패키지에 필요한 것이 있습니다.
성공 또는 실패 여부에 관계없이 다른 모든 대상을 실행 한 후에 특정 대상을 실행할 수 있습니까?"마지막으로"MSBuild 대상
try...finally equivalent in MsBuild은 관련이 있지만 작은 대상 그룹 만 처리합니다. 수십 개의 하위 빌드가있는 전체 패키지에 필요한 것이 있습니다.
이렇게하는 방법은 없습니다. 일반적으로 MSBuild에서는 대상의 실제 순서를 알기가 쉽지 않으며 상대 순서 만 알 수 있습니다. 이 목표로 무엇을하려합니까?
하나 이상의 CallTargets를 사용하여 최상위 타겟에서 랩핑 한 경우 <OnError .../>
작업을 사용하여 최종 타겟을 실행할 수 있습니까?
<Target Name="CompleteBuild">
<CallTarget Targets="Target1"/>
<CallTarget Targets="Target2"/>
<CallTarget Targets="FinalTarget"/>
<OnError ExecuteTargets="FinalTarget"/>
</Target>
다음은 내가하고있는 일입니다. AssemblyVersion을 수정하고 모든 건물을 수행하며 마지막 단계에서 AssemblyVersion을 원래대로 되 돌리십시오. 이렇게하는 좋은 방법이없는 것 같습니다. –
romkyns : 나는 똑같은 일을하고있다. 그것을하는 방법은 자신의 csproj 파일에서'CoreBuild' 타겟을 오버라이드하고 빌드가 실패 할 경우'AfterBuild' 타겟을 실행하도록 지정하는 추가'OnError' 속성을 사용하는 것입니다. 그렇게하면, AfterBuild 타겟은 성공이나 실패에 상관없이 모든 빌드에서 실행됩니다. 'CoreBuild' 타겟을 오버라이드하는 것에 대한 정보는 http://stackoverflow.com/a/5169881/278185를 참조하십시오. – Dave