2016-10-24 8 views
0

msbuild를 사용하여 작업중인 빌드 작업이 있습니다. 과제 내에서 여러 가지 목표가 있으며 그 중 일부는 준비 작업을 수행합니다.여러 DependsOnTargets가 실행되지 않습니다.

"msbuild myEvent.msbuild/t : event3"을 실행하면 이벤트가 실행됩니다. DependsOnTargets의 첫 번째 이벤트는 실행되지만 대상 목록의 두 번째 이벤트는 실행되지 않습니다. 예

<!-- only event1 will fire --> 
<Target Name="event3" DependsOnTargets="event1; event2"> 
    <Task TaskAction="myAction3"/> 
</Target> 
<Target Name="event1" DependsOnTargets="event4"> 
    ... do tasks here 
</Target> 
<Target Name="event2" > 
    ... do tasks here 
</Target> 
<Target Name="event4" > 
</Target> 

은 내가 DependsOnTargets 값의 공간을 제거하여이 문제를 수정하려고했습니다. 필자는 세미콜론으로 구분 된 값을 가지고 있는지 확인합니다. BeforeTargets와 AfterTargets를 성공없이 사용하려고했습니다.

내 msbuild 코드는 ToolsVersion 4.0을 대상으로합니다.

DependsOnTargets의 작동 방식이 누락 되었습니까?

편집

  • 나는 내 문제를 알아 냈다고 생각합니다. MSBuild는 같은 대상을 두 번 이상 실행할 수 없습니다. 이 경우
  • 나는
  • 이 zip 파일
  • 에서 일부 데이터베이스 파일의 압축을 풉니 서비스
  • 을 중지 데이터베이스 서비스를 시작 데이터베이스 서비스를
  • 드롭 데이터베이스를 시작
    • 다음을 수행해야
    • 데이터베이스 연결
    • 데이터베이스에 대한 추가 작업 수행 ...
  • 첫 번째 시작 데이터베이스 서비스가 실행되고 데이터베이스가 삭제되고 서비스가 중지됩니다. 데이터베이스 서비스를 시작하기위한 다음 호출이 실패합니다.
+0

이 문제를 좀 더 생각한 후에 나는 문제를 알고 있다고 생각합니다. 문제는 내 일련의 이벤트에서 여러 이벤트 중 하나를 호출한다는 것입니다. 이벤트가 이미 한 번 실행되었으므로 이벤트가 다시 호출되지 않습니다. 제 경우에는 서비스를 시작하고, 조치를 수행하고, 서비스를 중지하고, 서비스가 중지 된 동안 다른 조치를 수행 한 다음, 서비스를 다시 시작하여 다른 조치를 수행해야합니다. :) –

+0

반복되는 코드를 줄이기 위해 작업과 같은 대상을 사용하려고합니다. 대상은 한 번만 나타나고 나타나는 순간에만 실행됩니다. –

+0

예. 빌드의 후속 대상이 종속 된 경우에도 대상이 단일 빌드 중에 두 번 실행되지 않습니다. 대상이 실행되면 빌드에 대한 기여가 완료됩니다.원래 문제가 해결되었으므로 24 시간 후에 답변을 게시하고 표시 할 수 있습니다. –

답변

0

문제는 내가 작업처럼 목표를 다루고 있었기 때문에였습니다. 나는 중복 된 코드를 줄이려고했다.

일단 대상이 실행되면 다시는 실행되지 않습니다. 그러므로 여기에있는 테이크 아웃은 목표가 무엇인지, 그리고 과제가 무엇인지 분명히해야합니다.

저는 현재 작업 대상인 대상을 제거하고 올바른 대상 내에서 서비스 시작 및 중지와 같은 필수 작업을 생성하여이 문제를 해결했습니다.