Я пытаюсь настроить файл common.targets с некоторыми общими целями msbuild, которые я хочу использовать в своих командных сборках и, следовательно, импортировать в мои файлы TFSBuild.proj. Мне интересно, как лучше всего этого добиться? Нужно ли мне хранить common.targets рядом с каждым файлом TFSBuild.proj и, следовательно, иметь дубликаты файла target для каждой командной сборки или есть другой способ? Я бы предпочел не помещать целевой файл на каждую из машин сборки.
Где мне хранить общие цели для командных сборок?
Ответы (4)
Перед вызовом TFSBuild.proj в Team Build есть этап начальной загрузки, на котором из системы управления версиями загружаются только 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>"C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\tf"</TxTf>
<WorkingDirectory>C:\YourPathHere<WorkingDirectory>
<CustomProjTFSDir>"$/YourProj/YourCustomProjPath"</CustomProjTFSDir>
</PropertyGroup>
<Exec WorkingDirectory="$(WorkingDirectory)"
Command="$(TxTf) get $(CustomProjTFSDir)"/>
Ключом к этой работе является настройка рабочей области для пользователя вашего агента сборки, которая указывает на ваши пользовательские материалы. Этот каталог НЕ должен находиться в том же пространстве, что и ваши обычные сборки.
Vaccano
Цель обычного файла .targets - уменьшить дублирование ваших скриптов. Если у вас есть несколько копий этого файла в системе управления версиями, что произойдет, когда вам нужно будет изменить их (возможно, для обновления пути .exe)? Лично я предпочитаю отдельное место для общих файлов, на которые могут ссылаться любые / все другие сценарии сборки. Единственным недостатком этого является то, что вы, скорее всего, жестко запрограммируете путь к этому файлу.
Вы можете хранить их вместе с целями MS в $ Volume \ Program Files \ MSBuild. Преимущество этого заключается в том, что вы можете создать относительный путь, используя встроенные известные метаданные "$ (MSBuildExtensionsPath) \ Path \ To \ Your \ Targets"