我只發佈這是由我的TFS生成定義一個生成的二進制文件和每個版本接收一個唯一的版本號(1.0。$ YY $ DAYOFYEAR。$ REV)。構建名稱的名稱包含此版本號。版本號由PowerShell腳本設置爲程序集版本和二進制文件版本。我只有一個構建結果rentention(包括我投遞文件夾中生成的二進制文件)爲60天,現在我想知道:我將如何可能找出一些版本號是一歲,其變更集它是從讓建我可以看看源代碼或重建完整的二進制文件?我是否必須在構建期間以某種方式添加變更集信息?我必須在構建期間設置的版本號中對變更集編號進行編碼嗎?這兩個想法似乎都不是很巧妙。如何找出TFS 2015構建的變更集是從?
1
A
回答
1
我終於想出了一個PowerShell腳本,我鉤到我的生成定義爲只是之後的一個步驟是一個類似於建議here額外的構建步驟,設定的版本屬性中的所有AssemblyInfo.cs
文件:
$systDefinitionId = $env:SYSTEM_DEFINITIONID
$buildDefVersion = $env:BUILD_DEFINITIONVERSION
$buildDefName = $env:BUILD_DEFINITIONNAME
$buildSourceVersion = $env:BUILD_SOURCEVERSION
$buildSourceBranch = $env:BUILD_SOURCEBRANCH
$SrcPath = $env:BUILD_SOURCESDIRECTORY
$AllVersionFiles = Get-ChildItem $SrcPath AssemblyInfo.cs -recurse
$AllVersionFilesCount = ($AllVersionFiles | Measure-Object).Count
Write-Verbose "Updating $AllVersionFilesCount AssemblyInfo.cs files in path ""$SrcPath"" with source information." -Verbose
Write-Verbose "ID of build definition: $systDefinitionId" -Verbose
Write-Verbose "Version of build definition: $buildDefVersion" -Verbose
Write-Verbose "Name of build definition: $buildDefName" -Verbose
Write-Verbose "Changeset to build: $buildSourceVersion" -Verbose
Write-Verbose "Branch to build from: $buildSourceBranch" -Verbose
foreach ($file in $AllVersionFiles)
{
(Get-Content $file.FullName) |
%{$_ -replace 'AssemblyProduct\(""\)', "AssemblyProduct(""$buildDefName/$buildSourceVersion"")" } |
%{$_ -replace 'AssemblySourceBranch\(""\)', "AssemblySourceBranch(@""$buildSourceBranch"")" } |
%{$_ -replace 'AssemblySourceChangeset\(0\)', "AssemblySourceChangeset($buildSourceVersion)" } |
%{$_ -replace 'AssemblyBuild\(""\)', "AssemblyBuild(@""$buildDefName/ID: $systDefinitionId/Version: $buildDefVersion"")" } |
Set-Content $file.FullName -Force
}
我正在修改AssemblyProduct
屬性,方法是向其中寫入構建定義名稱和用於創建二進制文件的變更集。稍後,這些信息在詳細信息選項卡上的Windows資源管理器中的exe或dll的屬性中可見。
此外,我已經定義了自定義屬性AssemblySourceBranch
,AssemblySourceChangeset
和AssemblyBuild
以攜帶更詳細的信息。它們都具有相同的結構,所以爲了簡便起見只AssemblySourceChangeset
源代碼:
[AttributeUsage(AttributeTargets.Assembly, AllowMultiple = false)]
public class AssemblySourceChangesetAttribute : Attribute
{
public AssemblySourceChangesetAttribute(uint changeset)
{
Changeset = changeset;
}
public uint Changeset { get; }
}
應在「公開」可見產品領域的信息還不足以能夠重建二進制文件,仍然可以導致以反映在EXE或DLL,並閱讀那些自定義屬性,這些自定義屬性具有關於源分支,存儲的構建定義的ID和版本的信息。
1
+0
我更喜歡直接在二進制或在TFS的信息「版本變更」的一些存儲。發行說明很容易丟失,因爲有人只將二進制文件複製到其他地方。然而,它是記錄相關工作項和提交的有趣機制。將嘗試記住你的建議。 – David
1
相關問題
- 1. TFS 2015繼續構建只輸出更改程序集
- 2. 從TFS導出變更集?
- 3. 如何從TFS 2017中構建相關的變更集?
- 4. 如何鏈接TFS 2015中的構建?
- 5. TFS 2015 Visual Studio構建項目變量
- 6. TFS 2015構建變量擴展
- 7. TFS 2015如何獲得兩個以上的變更集顯示
- 8. MSBuild從TFS 2015構建模板丟失
- 9. TFS 2015構建定義 - 覆蓋包含變量的構建號
- 10. TFS 2015構建配置
- 11. TFS 2015構建問題
- 12. SpecFlow構建TFS 2015年
- 13. TFS 2015 XAML構建失敗
- 14. 移動構建腳本vNext 2015 TFS 2015
- 15. 如何找出TFS變更集已合併到哪個分支
- 16. TFS構建變量當前衝刺TFS 2015
- 17. TFS構建2015 - 使用Visual Studio 2015構建過程
- 18. 更好的方式查看TFS變更集? VS 2015
- 19. 將TFS 2013 xaml構建定義轉換爲TFS 2015 vNext構建
- 20. TFS構建特定的變更集並使用變更集號進行部署
- 21. 從另一個構建(條件)在TFS觸發構建2015年
- 22. 在內部創建CI構建TFS 2015
- 23. TFS 2015構建定義來查找另一個構建的構件位置
- 24. 構建定義的TFS 2015「增量」
- 25. TFS 2015可以構建變量來訪問其他構建變量嗎?
- 26. 我如何從TFS 2015構建(匹配我的XAML構建)獲得預期輸出?
- 27. 使用tfs中的變更集來構建最新源代碼
- 28. 如何將變更集註入構建?
- 29. 如何從另一個TFS構建中調用TFS構建?
- 30. TFS「missing」變更集
當你自己修復它時總會更好,因爲解決方案最適合你的場景!:) –