我想調整我的類庫的TeamCity構建配置的輸出,以便生成的dll文件具有以下版本號:3.5.0.x,其中x是TeamCity選擇的Subversion修訂號。讓TeamCity將Subversion版本號集成到程序集版本
我發現我可以使用BUILD_NUMBER
環境變量來獲得x,但不幸的是我不明白我還需要做什麼。
我發現所有的「教程」都說「你只需將其添加到腳本中」,但他們不會說腳本,而「this」通常指的是MSBuild社區擴展的AssemblyInfo任務。
我需要建立一個自定義的MSBuild腳本以某種方式使用它嗎? 「腳本」與解決方案文件還是C#項目文件相同?
我對MSBuild過程根本不瞭解,只是我可以直接將解決方案文件傳遞給MSBuild,但我需要添加到「腳本」中的是XML,解決方案文件決定不會看起來像XML。
那麼,任何人都可以點我一步一步指導如何使這項工作?
這是我結束了:
- 安裝MSBuild Community Tasks
編輯我的核心類庫的.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">
更改我的所有AssemblyInfo.cs文件,以便它們不指定AssemblyVersion或AssemblyFileVersion(回想起來,我將考慮將AssemblyVersion放回)
- 添加了一個鏈接,指向剛纔位於全局的GlobalInfo.cs外的所有項目
- 確保該文件是建立一次,所以,我在源代碼控制
現在,這將更新GlobalInfo.cs一個默認的文件只有在環境變量BUILD_NUMBER設置,它是當我通過TeamCity構建時。
我選擇保持AssemblyVersion常量,以便引用仍然有效,並且只更新AssemblyFileVersion,以便我可以看到哪個構建dll來自。
不幸的是,他們的補丁並不[當前](http://confluence.jetbrains.net/display/TCD65/AssemblyInfo+Patcher)允許一個指定不同的'AssemblyVersion'和'AssemblyFileVersion'值。 – ladenedge 2011-12-13 17:14:17
您的建議在主要關注的是能夠跟蹤內部版本號的情況下非常有用:謝謝! – faester 2012-01-18 13:42:38
男人我正在做很多Scheiss樣板代碼只是爲了讓我的代碼。你救了我2或3天的工作! – 2014-06-05 12:44:49