Где я должен хранить общие цели для тимбилдинга?

StackOverflow https://stackoverflow.com/questions/602281

Вопрос

Я пытаюсь настроить файл common.targets с некоторыми распространенными целями msbuild, которые я хочу использовать в своих командных сборках и, следовательно, импортировать в свои файлы TFSBuild.proj.Мне интересно, каков наилучший способ достичь этого?Нужно ли мне хранить common.targets прямо рядом с каждым файлом TFSBuild.proj и, следовательно, иметь дубликаты файла targets для каждой командной сборки или есть другой способ?Я бы предпочел не размещать целевой файл на каждой из машин сборки.

Это было полезно?

Решение

Team Build проходит этап начальной загрузки перед вызовом TFSBuild.proj, на котором из системы управления версиями загружается только TFSBuild.proj и другие файлы в том же каталоге.Поэтому, если вы хотите, чтобы ваш целевой файл находился под управлением исходной версии, вам нужно поместить его в то же место, что и TFSBuild.proj

Более подробная информация в этом ответе

Я никогда не пробовал это, но вы могли бы поместить целевой файл в общий сетевой ресурс и импортировать его, используя общий ресурс unc.Что -то вроде

<Import Project="\\anothermachine\share\something.targets"/>

Но для этого потребуется, чтобы учетная запись сборки и все пользователи, выполняющие сборки для настольных компьютеров, имели доступ к этому сетевому ресурсу.

Другие советы

Поместите его в обычное место, которое вам нравится в системе управления версиями.Перед использованием целевых объектов выполните получение из вашего файла TFSBuild.proj следующим образом:

<PropertyGroup>
  <!--Path to the TFS Command Line (used for checkin and out)-->
  <TxTf>&quot;C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\tf&quot;</TxTf>

  <WorkingDirectory>C:\YourPathHere<WorkingDirectory>
  <CustomProjTFSDir>&quot;$/YourProj/YourCustomProjPath&quot;</CustomProjTFSDir>
</PropertyGroup>

<Exec WorkingDirectory="$(WorkingDirectory)"
      Command="$(TxTf) get $(CustomProjTFSDir)"/>

Ключом к этой работе является настройка рабочей области для вашего пользователя build agent, которая указывает на ваши пользовательские данные.Этот каталог НЕ должен находиться в том же пространстве, что и ваши обычные сборки.

Ваккано

Цель общего файла .targets - уменьшить дублирование ваших скриптов.Если у вас есть несколько копий этого файла под управлением версиями, что произойдет, когда вам нужно будет их изменить (возможно, для обновления пути к .exe)?Лично я предпочитаю отдельное расположение для общих файлов, на которые могут ссылаться любые другие скрипты сборки.Единственным недостатком этого является то, что вы, скорее всего, будете жестко кодировать путь к этому файлу.

Вы могли бы сохранить их вместе с целевыми объектами MS в $Volume\Program Files\MSBuild.Преимущество этого заключается в том, что вы можете создать относительный путь, используя встроенные метаданные know "$(MSBuildExtensionsPath)\Path o\Your argets".

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top