2017-02-23 37 views
0

Я пытаюсь установить, какие проекты будут выполняться при запуске сборки TeamCity. Для этого у меня есть настраиваемая настройка параметров в сборке TeamCity. Параметр представляет собой набор имен проектов, которые запрашиваются для выбора из предопределенного набора значений (имена проектов) при запуске сборки.Как установить проекты для пакета в Team City при выполнении пользовательской сборки

Ради примера предположим, что этот обычай параметр:

ProjectToPackage: Project1, Project2, Project3 

Позже на этапе сборки NuGet пакет Я хочу использовать этот параметр, чтобы решить, какие проекты для упаковки. Так, в спецификации файлов, которые я имел:

trunk/*/*.csproj 

Какой пакет все проекты, которые я хочу сейчас, чтобы отразить выбор пользовательских параметров, что-то вроде этого:

trunk/*/%ProjectToBuild%.csproj 

Теперь это, очевидно, не будет работать, если множественные значения выбираются, как и в тех случаях, когда несколько значений выбирают параметр «» отделенную строка, egif Проект1 и Project2 выбраны, ProjectToPackage будет «Проект1 , Проект2", в результате выбора спецификации файлы будут обращаться к:

trunk/*/Project1, Project2.csproj 

Что, конечно, не удается.

Итак, я ищу способ ввода имен проектов, которые будут упакованы в результате сборки TeamCity.

ответ

0

Для этого необходимо написать сценарий MSBuild. Учитывая есть пользовательские настройки параметров, которые перечислены все проекты, чтобы быть packaged с именем ProjectsToBuild, вот MSBuild target, что сделало работу:

<Target Name="Pack"> 
    <ItemGroup> 
     <_SelectedProjectItem Include="$(ProjectsToBuild)" /> 
     <ProjectsToPack Include="$(MSBuildProjectDirectory)\*\%(_SelectedProjectItem.Identity).csproj" /> 
    </ItemGroup> 

    <Exec Command="$(PathToNuGetExe) pack %(ProjectsToPack.FullPath) -OutputDirectory $(OutDir) -IncludeReferencedProjects" /> 
    </Target>