TFS 빌드에서 첫 번째 실행 후 사용자 정의 대상이 건너 뜁니다.
-
06-07-2019 - |
문제
내 빌드에는 사용자 정의 대상 (다른 사본 작업 그룹)이있어 여러 장소의 변경에 영향을 미치기 위해 몇 번 전화해야합니다. 그러나 이것은 처음으로 호출되는 경우에만 실행되며, 그 후 TFS 빌드는 해당 대상을 건너 뜁니다.
프로세스는 다음과 같습니다.
<!-- Copy some files to another location -->
<CallTarget Targets="CopyFiles"></CallTarget>
...
<!-- Copy the above files to yet another location -->
<CallTarget Targets="CopyFiles"></CallTarget>
빌드 로그에서 대상 "카피 파일"이 두 번째로 건너 뜁니다.
Target "CopyLicenseManagerFiles" skipped. Previously built successfully.
왜 이런 일이 일어나고 있습니까? 대상 (또는 내가 쓴 사용자 정의 대상)을 여러 번 실행하도록 강요하는 방법이 있습니까?
해결책
매개 변수 세트 당 MSBuild 인스턴스 당 한 번 호출해야합니다. 팀 빌드는 일부 상황에서 별도의 MSBuild 인스턴스를 분사합니다 (예 : 둘 이상의 솔루션 구성을 제공하는 경우). 그러나 그것은 아마도 당신을 도와주지 않을 것입니다.
시나리오에 더 적용 할 수있는 MSBuild는 다른 매개 변수 세트로 호출하면 작업을 다시 실행합니다. 원하는 기능과 같은 두 개의 다른 파일 세트를 복사하는 경우.
<MSBuild Project=".\CommonStuff.targets" Targets="CopyFiles" Properties="Location=1" />
<!-- .... -->
<MSBuild Project=".\CommonStuff.targets" Targets="CopyFiles" Properties="Location=2" />
다른 솔루션은 기능을 대상 대신 작업으로 리팩터링하는 것입니다. 아직 선언적 인 절차 적 단점이 있지만, 작업은 더 친숙한 언어의 "기능"으로 생각하는 것에 훨씬 더 가깝게 행동합니다.
다른 팁
이것은 디자인에 의한 것입니다. 대상은 "방법"으로 생각해서는 안됩니다. MSBuild는 더 선언적입니다. 따라서 실행 된 목표를 추적하고 의도적으로 이미 완료된 목표를 건너 뜁니다.
제휴하지 않습니다 StackOverflow