我有5個C#項目的Visual Studio解決方案。我想要在每個項目中匹配程序集版本。但它看起來像我必須進入每個項目的屬性,並單擊每個項目一次一個程序集版本。有沒有辦法像解決方案一樣處理解決方案,只有一個版本適用於每個項目?如何自動將我的解決方案中的所有項目設置爲相同版本?
回答
剛創建一個文件,例如GlobalAssemblyInfo.cs
解決方案根文件夾中,然後添加必要的屬性,並最終將其作爲現有項目添加到每個項目作爲鏈接。
在Solution Explorer
右鍵單擊project name > Add > Existing item...
並在對話框中從下拉列表中選擇Add As Link
選項,如您在此image上所見。
// Content of GlobalAssemblyInfo.cs file
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]
請注意:
- 你必須從每個項目的
Properties\AssemblyInfo.cs
文件中刪除這些屬性。 - 你也可以將其他程序集屬性爲
GlobalAssemblyInfo.cs
文件以及
的結果是,你將有隻有一個文件,你可以設置版本,它將適用於所有項目。
嗯,當我添加一個現有項目時,它似乎會複製一份。因此,對根文件夾中文件的更改不會反映在副本中。 –
啊,你的意思是我用「添加爲鏈接」,不是嗎? –
是的,我更新了答案,以便它現在也包含這些重要信息。謝謝你的評論。 – Gabor
我不認爲有任何解決方案級別的選項來做到這一點。我使用powershell腳本在解決方案中爲我的15個項目實現它。
$version= "1.3.0.0"
(Get-ChildItem -Include AssemblyInfo.cs -Recurse) |
Foreach-Object {
Set-Content $_ ((Get-content $_ -Encoding UTF8) -replace "\d+\.\d+\.(\d+|\*)(\.(\d+|\*))?", $version) -Encoding UTF8
}
將此腳本保存在與解決方案文件相同的目錄中。您也可以將此作爲解決方案項目添加到解決方案本身中,並在右鍵單擊腳本文件時從Visual Studio命令行選項啓動它。
由於每個項目都有自己的組件,因此它們將被獨立處理。我已經找到了最適合我是使用T4模板和基於它的算法在模板中像這樣在修訂是自1/1/2000幾個小時的計算:
<#@ template debug="false" hostspecific="false" language="C#" #>
using System.Reflection;
[assembly: AssemblyVersion("1.0.6.<#= this.RevisionNumber #>")]
[assembly: AssemblyFileVersion("1.0.6.<#= this.RevisionNumber #>")]
<#+
int RevisionNumber = (int)(DateTime.UtcNow - new DateTime(2000,1,1)).TotalHours;
#>
- 1. 將所有項目添加到相同的解決方案?
- 2. 如何配置解決方案中的所有C#項目
- 3. 爲什麼VS2008版本與msbuild相同的解決方案有所不同?
- 4. 如何使用相同的版本號更新解決方案中的所有項目?
- 5. 如何從其他項目方法相同的解決方案
- 6. Visual Studio 2010:爲解決方案中的所有項目設置NDEBUG
- 7. 爲解決方案中的所有項目設置後期構建操作
- 8. 同一解決方案中的項目究竟有多相關?
- 9. VS.net在一個解決方案中爲多個項目設置版本
- 10. 解決方案中所有項目的共同資源
- 11. 如何重建解決方案中的所有項目?
- 12. 找到解決方案中所有項目的所有參考
- 13. 在TeamCity中構建相同解決方案的不同項目
- 14. 如何使解決方案中的項目具有相同的include,lib路徑
- 15. C# - 將多項目解決方案轉換爲1-1項目解決方案
- 16. 如何保持VSTO解決方案與以前版本相同
- 17. 相同的DbContext在解決方案中的不同項目下行爲不同
- 18. Android:在ListView中將所有項目設置爲相同的版面高度
- 19. 如何將工作目錄設置爲C++中的「解決方案目錄」
- 20. 在Visual Studio解決方案中設置所有項目的運行時庫
- 21. MSVS 2010.如何將相同版本分配給解決方案中的所有組件?
- 22. 如何從同一解決方案檢查另一個項目的版本
- 23. 在同一解決方案中項目到項目參考特定版本
- 24. 在相同的解決方案中處理C#和VB.net項目
- 25. ASP.NET中相同的解決方案多項目
- 26. 如何將WrapPanel中的所有項目寬度設置爲相同的值?
- 27. RandomAccessFile:將所有項目設置爲相同的字節數?
- 28. 更新解決方案中所有程序集的版本號
- 29. Nuget:將解決方案中的一個項目設置爲不受Nuget管理?
- 30. 如何設置解決方案中的所有項目以複製本地虛假
即使它不支持VS2017,我仍然在使用這個插件。 [版本控制構建](https://www.codeproject.com/articles/5851/versioning-controlled-build)您可以添加自定義工具並使用自述文件中介紹的命令行啓動插件。您可以使用它來更改和設置所有版本信息,而無需在每個項目中打開每個AssemblyInfo.cs – Steve