Все целевые объекты не вызываются (вложенные целевые объекты не выполняются)

Я использую два файла TARGET. В одном файле TARGET я вызываю TARGET, который находится во втором файле TARGET. Затем этот второй TARGET вызывает другой TARGET, который имеет 6 других вызовов TARGET, которые выполняют множество разных действий (помимо вызова других вложенных TARGETS (но внутри одного и того же файла TARGET)). Проблема в том, что в TARGET, где я называю 6 TARGETS, выполняется только первый. Программа не находит своего способа назвать 2-й, 3-й, 4-й, 5-й и 6-й ЦЕЛИ. Существует ли ограничение на количество вложенных TARGETS, которые могут быть вызваны и запущены? Ничто не терпит неудачу. Проблема заключается в том, что другие вызовы TARGET не выполняются. Спасибо за любую помощь, которую вы можете предоставить.

Ответ 1

Нет ограничений на количество вложенных целей. Вы пытались запустить msbuild со всем журналом, чтобы узнать, почему цели не вызываются:

msbuild [project.file] /verbosity:detailed 

Я думаю, что это связано с невыполненным условием (атрибут Condition на целевом объекте), неизменным вводом (Input атрибут на цель) или вы пытаетесь вызвать одни и те же конечные кратные моменты.

Вызов одной и той же цели несколько раз

  • С помощью задачи MSBuild:

    <!-- The target we want to execute multiple times -->
    <Target Name="VeryUsefulOne">
      <Message Text="Call VeryUsefulOne Target"/>
    </Target>
    
    <Target Name="One">
      <Message Text="One"/>
      <MSBuild Targets="VeryUsefulOne"
               Properties="stage=one" 
               Projects="$(MSBuildProjectFile)"/>
    </Target>
    
    <Target Name="Two">
      <Message Text="Two"/>
      <MSBuild Targets="VeryUsefulOne"
               Properties="stage=two" 
               Projects="$(MSBuildProjectFile)"/>
    </Target>
    
    <Target Name="OneTwo">
      <CallTarget Targets="One;Two"/>
    </Target>
    

Важно изменить значение Properties между вызовами.