2009-09-11 7 views
2

У меня есть пользовательская цель (группа задач копирования, среди прочего) в моей сборке, которую мне нужно вызвать пару раз, чтобы произвести изменения в разных местах. Тем не менее, это выполняется только при первом вызове, после чего сбор TFS пропускает указанную цель.Пользовательские цели пропускаются после первого запуска в сборке TFS

Процесс происходит следующим образом:

<!-- Copy some files to another location --> 
<CallTarget Targets="CopyFiles"></CallTarget> 

... 

<!-- Copy the above files to yet another location --> 
<CallTarget Targets="CopyFiles"></CallTarget> 

В журнале сборки, то видно, что целевые «CopyFiles» пропускается во второй раз она называется:

Target "CopyLicenseManagerFiles" skipped. Previously built successfully.

Почему это происходит? Есть ли способ заставить цель (или любую пользовательскую целевую запись, которую я пишу) запускать несколько раз?

ответ

3

Он должен вызываться один раз для каждого экземпляра MSBuild для каждого набора параметров. В некоторых случаях Team Build выделяет отдельные экземпляры MSBuild (например, если вы предоставляете более одной конфигурации решения). Но это, вероятно, вам не поможет.

Более применительно к вашему сценарию MSBuild будет повторно запускать задачу, если вы вызываете ее с другим набором параметров. Если вы копируете два разных набора файлов, которые звучат как функция, которую вы ищете.

<MSBuild Project=".\CommonStuff.targets" Targets="CopyFiles" Properties="Location=1" /> 
<!-- .... --> 
<MSBuild Project=".\CommonStuff.targets" Targets="CopyFiles" Properties="Location=2" /> 

Другое решение состоит в том, чтобы реорганизовать функциональность в Задачу вместо Целевой. Хотя есть еще декларативные и процедурные причуды, Задачи ведут себя гораздо ближе к тому, что вы считаете «функцией» от более знакомых языков.

3

Это по дизайну. Цели не следует рассматривать как «методы». MSBuild более декларативный. Таким образом, он отслеживает цели, которые были выполнены и целенаправленно пропускает те, которые уже были завершены.

 Смежные вопросы

  • Нет связанных вопросов^_^