Где я должен хранить общие цели для построения команды? - PullRequest
2 голосов
/ 02 марта 2009

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

Ответы [ 4 ]

4 голосов
/ 11 мая 2009

Поместите его в обычное место, которое вам нравится в системе контроля версий. Прежде чем использовать цели, получите файл 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)"/>

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

Vaccano

3 голосов
/ 02 апреля 2009

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

Подробнее в этом ответе

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

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

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

2 голосов
/ 01 апреля 2009

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

2 голосов
/ 02 марта 2009

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

...