2015-04-14 3 views
2

Мне нужно добавить номер версии сборки к имени артефакта, который создает TeamCity.Как предоставить версию сборки для использования в шаге сборки TeamCity

Мой план состоит в том, чтобы переименовать артефакт после сборки, но как мне получить доступ к сборке в сборке?

Существует ли уже стандартный параметр TC? Если нет, то как я могу отправить информацию из моего MSBuild в TC?

ответ

0

Я недавно сделал это сам, и именно так мне удалось это сделать.

Если вы строите проект (* .csproj), вы можете отредактировать csproj (In Notepad). Добавьте следующее в «AfterBuild» Target

Примечание: Убедитесь, что это не в закомментировать блок, который это по умолчанию

<Target Name="AfterBuild"> 
    <GetAssemblyIdentity AssemblyFiles="bin\MyAssembly.dll"> 
     <Output TaskParameter="Assemblies" ItemName="MyAssembly"/> 
    </GetAssemblyIdentity> 
    <Message Text="Setting build number back to TeamCity... " Importance="high"/> 
    <TeamCitySetBuildNumber BuildNumber="$(MyAssembly.Version)" /> 
</Target> 

Если вы строите решение вместо , затем создайте файл MSBUILD .proj, который вы создаете из TeamCity, который вызывает сборку решения сначала, а затем устанавливает версию как BuildNumber в TeamCity.

<?xml version="1.0" encoding="utf-8"?> 
<Project ToolsVersion="12.0" DefaultTargets="SetBuildNumber" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 

    <Target Name="Build"> 
    <Message Text="Build task called... " Importance="high"/> 
    <MSBuild Projects="$(teamcity_build_checkoutDir)\MySolution.sln" ToolsVersion="12.0" Properties="Configuration=Release;OutputPath=bin;"/> 
    </Target> 

    <Target Name="SetBuildNumber" DependsOnTargets="Build"> 
    <GetAssemblyIdentity AssemblyFiles="bin\MyAssembly.dll"> 
     <Output TaskParameter="Assemblies" ItemName="MyAssembly"/> 
    </GetAssemblyIdentity> 
    <Message Text="Setting build number back to TeamCity... " Importance="high"/> 
    <TeamCitySetBuildNumber BuildNumber="$(MyAssembly.Version)" /> 
    </Target> 

</Project> 

С приведенным выше примером поместите это в файл, такой как MySolution.proj. Сообщайте TeamCity о запуске MSBuild Runner и создайте MySolution.proj и оставьте Targets Blank (который будет использовать значения по умолчанию, установленные в файле proj), который будет запускать целевую кнопку SetBuildNumber, которая, в свою очередь, имеет целевую зависимость от Build, поэтому Build будет вызван первый. Это создаст ваше решение, указанное в целевом «Build» с указанными параметрами, затем оно будет проходить через «SetBuildNumber», которое примет AssemblyVersion указанной DLL и отправит сообщение TeamCity для обновления BuildNumber (% build. число%).

Надеюсь, это поможет.

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