2013-10-11 3 views
2

Я использую MSBuild вместе с MSBuild Extensions, и я ищу способ определить, на какой машине ведется моя сборка.Как определить происхождение сборки с помощью скрипта MSBuild?

Я хочу изменить часть нашего номера версии на основе этого, поэтому разработчик может определить, была ли построена сборка на dev-машине, в поле сборки сборки и т. Д. и др.

Я думаю, что использование $ (COMPUTERNAME) было бы хорошим началом, но как я могу сделать сравнение?

Пример:

3.2.0.416 -> 0 будет сказать нам, что сборка является неофициальным DEV сборки.

3.2.1.417 -> 1 сообщит нам, что эта сборка была изготовлена ​​на нашей коробке CI QI.

Может ли кто-нибудь указать мне правильное направление? Я нашел эту статью хорошей отправной точкой (Setting .NET Assembly Version with Jenkins and TFS)

+0

Зачем устанавливать номер версии для любой сборки, кроме сервера сборки продукции? Почему вы строите на двух разных коробках? Dev я получаю, но почему у вас есть «QA CI Server» и блок создания производства? –

+0

Я просто использую это как свернутый пример. Я не стал бы оценивать это, потому что это не вопрос вопроса. Но чтобы ответить вам прямо, у нас есть CI, но наши производственные сборки выполняются вручную, потому что требуются дополнительные шаги, которые мы в настоящее время не автоматизировали. Однако это в значительной степени не имеет значения. – Ray

ответ

1
  1. Создайте объект на основе MachineName.
  2. Используйте это свойство для обновления файла AssemblyInfo.cs до .

У меня есть «SubVersionRevision» ниже, но просто использовать альтернативный синтаксис, чтобы получить версию TFS (по ссылке вы имеете в исходном сообщении) ........

Затруднение раствор: установка и использование "MyCustomProperty001"

<Choose> 


    <When Condition=" '$(Computername)'=='MyDevMachine' ">    
     <PropertyGroup> 
      <MyCustomProperty001>0</MyCustomProperty001> 
     </PropertyGroup> 
    </When> 

    <When Condition=" '$(Computername)'=='MyQaMachine' "> 

     <PropertyGroup> 
      <MyCustomProperty001>1</MyCustomProperty001> 
     </PropertyGroup> 

    </When> 

    <Otherwise> 

     <PropertyGroup> 
      <MyCustomProperty001>9</MyCustomProperty001> 

     </PropertyGroup>   

    </Otherwise> 

</Choose> 

<ItemGroup> 
    <AssemblyInfoFiles Include="$(ProjectDir)\**\*AssemblyInfo.cs" /> 
</ItemGroup> 

<SvnVersion LocalPath="$(MSBuildProjectDirectory)" ToolPath="$(SVNToolPath)"> 
    <Output TaskParameter="Revision" PropertyName="MySubVersionRevision" /> 
</SvnVersion> 


<FileUpdate Files="@(AssemblyInfoFiles)" 
Regex="AssemblyFileVersion\(&quot;(\d+)\.(\d+)\.(\d+)\.(\d+)" 
ReplacementText="AssemblyFileVersion(&quot;$1.$2.$(MyCustomProperty001).$(SubVersionRevision)" /> 

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