簡體   English   中英

使TeamCity將Subversion內部版本號集成到程序集版本中

[英]Making TeamCity integrate the Subversion build number into the assembly version

我想調整我的類庫的TeamCity構建配置的輸出,以使生成的dll文件具有以下版本號:3.5.0.x,其中x是TeamCity選擇的Subversion版本號。

我發現我可以使用BUILD_NUMBER環境變量來獲取x,但是不幸的是,我不知道我還需要做什么。

我發現所有的“教程”都說“您只是將其添加到腳本中”,但他們沒有說明哪個腳本,“ this”通常是指MSBuild社區擴展中的AssemblyInfo任務。

我是否需要以某種方式構建自定義MSBuild腳本才能使用它? “腳本”與解決方案文件還是C#項目文件相同?

除了可以將解決方案文件直接傳遞給MSBuild之外,我對MSBuild的過程一無所知,但是我需要添加到“腳本”中的是XML,而且解決方案文件肯定看起來不像XML。

因此,誰能指出我有關如何進行此工作的逐步指南?


我最終得到的是:

  1. 安裝MSBuild社區任務
  2. 編輯我的核心類庫的.csproj文件,並更改底部,使其顯示為:

     <Import Project="$(MSBuildToolsPath)\\Microsoft.CSharp.targets" /> <Import Project="$(MSBuildExtensionsPath)\\MSBuildCommunityTasks\\MSBuild.Community.Tasks.Targets" /> <Target Name="BeforeBuild"> <AssemblyInfo Condition=" '$(BUILD_NUMBER)' != '' " CodeLanguage="CS" OutputFile="$(MSBuildProjectDirectory)\\..\\GlobalInfo.cs" AssemblyVersion="3.5.0.0" AssemblyFileVersion="$(BUILD_NUMBER)" /> </Target> <Target Name="AfterBuild"> 

  3. 更改所有我的AssemblyInfo.cs文件,以使其不指定AssemblyVersion或AssemblyFileVersion(回想起來,我將考慮將AssemblyVersion放回原處)

  4. 添加了到現在位於所有項目外部的全局GlobalInfo.cs的鏈接
  5. 確保此文件生成一次,以便在源代碼管理中有一個默認文件

現在,僅當設置了環境變量BUILD_NUMBER時(這是通過TeamCity構建時),這才更新GlobalInfo.cs。

我選擇保持AssemblyVersion不變,以便引用仍然有效,並且僅更新AssemblyFileVersion,以便可以看到dll來自哪個版本。

CSPROJ文件實際上是MSBuild文件。

在VS.NET中卸載相關的類項目,對其進行編輯並取消對BeforeBuild目標的注釋。 從MSBuild社區擴展中添加FileUpdate MSBuild任務。

在您的MSBuild文件中,可以使用環境變量$(build_vcs_number_1)從TeamCity檢索BUILD_NUMBER。 請注意,您可能要為要檢查的“生產”條件創建其他配置,因為在本地構建時,這顯然不起作用。

只需將其用作FileUpdate任務的ReplacementText屬性的輸入。

請注意,如果修訂版本號超過65535標記( UInt16 ),則不能在AssemblyVersion屬性中使用它。

但是我建議您使用的是AssemblyInformationalVersion ,它只是一個沒有此限制的字符串。 當然,除非您確信不會達到此修訂版本的上限,但這似乎是一種狡猾的解決方法。

另外,您可以設計一種方法(使用abcd作為您的版本號)對c使用修訂div 1000,對d使用修訂mod 1000。

在TeamCity 6.5中,使用AssemblyInfo修補程序 非常容易實現。

  • 轉到構建配置步驟3“構建步驟”;
  • 點擊“添加構建功能”;
  • 選擇特征類型“ AssemblyInfo修補程序”;
  • 指明您想要的版本。 我使用: %system.build.number%

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM