我已經完成了一些關於此主題的搜索,並且能夠找到單獨的解決方案來生成自定義內部版本號以及補丁程序集信息,但是我無法完成這兩項。當使用我在搜索中找到的自定義POWERSHELL腳本時,我可以將內部版本號設置爲使用腳本創建的內容,但是此版本號不會進行修補。我在補丁中唯一的成功是使用設置數字和計數器。但是,POWERSHELL腳本創建的編號不會持續到程序集修補器可以使用的程度。我做錯了嗎?如何在TeamCity中生成自定義內部版本號,然後將其修補爲程序集信息?
2
A
回答
3
我最後用切塔尼亞的邏輯提供一點點解決它......但修改:
$ww = ([Math]::Floor([DateTime]::Now.DayOfYear/7)+1)
Write-Host "##teamcity[buildNumber '%major.minor%.$ww.%build.counter%']"
$fileLocation = Join-Path -Path "%teamcity.build.checkoutDir%" -ChildPath "\SourceDir\AssemblyInfo.cs"
$oldValue = "AssemblyFileVersion\(""(\d+)\.\d+\.\d+\.\d+""\)"
$newValue = [string]::Concat("AssemblyFileVersion(""%major.minor%.", $ww, ".%build.counter%", """)")
(get-content $fileLocation) | foreach-object {$_ -replace $oldValue, $newValue} | set-content $fileLocation
1
在我們的項目中,我們使用CommonAssemblyInfo.cs文件解決了這個問題。基本上將它添加到您的解決方案中,從各個文件中刪除AssemblyInfo.cs文件,並且當您編譯所有dll時,將具有CommonAssemblyInfo.cs文件中指定的程序集信息。
在編譯之前,我們更新這個文件作爲第一步。我們使用的唯一編號是來自源代碼管理系統的變更集ID(在我們的案例中是TFS)。基本上,源控制變更集編號保證是獨一無二且高度相關的。它會告訴你究竟哪個程序集是由源代碼管理中的哪個變更集生成的。
基本上在我們構建配置的第一步是一個PowerShell腳本(相應地更新路徑CommonAssemblyInfo.cs)看起來像下面
$fileLocation = Join-Path -Path "%teamcity.build.checkoutDir%" -ChildPath "Source\CommonAssemblyInfo.cs"
$oldValue = "AssemblyVersion\(""(\d+)\.\d+\.\d+\.\d+""\)"
$newValue = 'AssemblyVersion("$1.0.0.%build.vcs.number%")'
(get-content $fileLocation) | foreach-object {$_ -replace $oldValue, $newValue} | set-content $fileLocation
因此,建立SETP 1,與變更集數更新您的程序集版本如上。第2步,編譯你的解決方案。第3步對x,測試,部署等等,等等
相關問題
- 1. Teamcity自定義內部版本號生成器
- 2. 讓TeamCity將Subversion版本號集成到程序集版本
- 3. 在TeamCity中設置自定義內部版本號
- 4. TeamCity的集信息修補補丁文件,但DLL版本是不是「正確」
- 5. 將Octopack nuget版本號更改爲teamcity的內部版本號
- 6. TeamCity內部版本號爲常數
- 7. 在生成後事件中閱讀程序集版本號?
- 8. 如何處理修補程序,這些修補程序尚未成爲版本分支的一部分?
- 9. Linux內核修補程序版本宏定義
- 10. 如何使用程序集綁定重定向來忽略修訂版本號和內部版本號
- 11. 如何在構建後修改程序集的版本號?
- 12. 將自定義版本信息添加到C#應用程序
- 13. 如何在團隊城市中添加程序集信息修補程序7.1.5
- 14. 如何使用TeamCity AssemblyInfo修補程序生成功能,但排除SVN外部件也被修補?
- 15. 使用自定義程序集信息將TLB文件轉換爲程序集
- 16. TeamCity內部版本號與Ant版本號任務
- 17. tlbimp.exe能否生成具有自定義版本信息的互操作程序集?
- 18. TeamCity的9:如何添加git的短散到集信息修補
- 19. Powershell獲取修補程序信息
- 20. 如何自動將R更新爲最新的修補版本?
- 21. 使用TeamCity構建和部署特定的修訂版本號
- 22. 將Tortoise SVN修訂版編號鏈接到程序集版本
- 23. 自動修補程序版本與語義版本關閉主分支的
- 24. 在Gradle構建腳本中訪問TeamCity內部版本號
- 25. .Net 4 - 在程序集中包含自定義信息
- 26. 如何讓Reflection.Emit程序集訪問生成程序集中的內部成員?
- 27. 如何在Windows上完成修補MQ修補程序
- 28. 如何使用另一個生成配置中的內部版本號來設置Team City內部版本號?
- 29. 如何自定義PowerBuilder的指定版本信息
- 30. 爲自定義XmlSerializer生成一個Xml序列化程序集
此代碼似乎讓我非常接近。它正在成功更改程序集內部版本號,但最終編譯的EXE仍在其細節中顯示1.0.0.0。但是當我查看teamcity checkout文件夾的工作目錄時,會正確調整assemblyinfo文件。所以這似乎是又一次不堅持的情況。 – DrDoomPDX
爲了澄清,我在編譯步驟之前使用了這段代碼。所以我不確定它爲什麼不堅持。相反,如果我將AssemblyInfo patcher與系統計數器/內部版本號一起使用,它似乎可以很好地完成這項工作。我用這種方法唯一的問題是,它不允許我以我想要的方式自定義構建編號。 – DrDoomPDX