簡體   English   中英

如何在Visual Studio中使自動版本號工作

[英]How do I make automatic version numbers work in Visual Studio

我被要求在代碼庫中為程序集添加自動編號。 我一直在將版本從默認的1.0.0.0更改為1.0。*像這樣:

[assembly:AssemblyVersion(“1.0。*”)]

它根據我的意願生成一個數字。

但是,代碼庫有數百個DLL,其中很多都是相互引用的。 現在,當我編譯一些項目時,他們抱怨引用組件所需的DLL版本不正確,並且它們不會構建:(

我怎樣才能做到這一點? 我們需要它,以便在編譯代碼庫層次結構底部的DLL時,引用它的所有其他DLL都可以正常工作而無需重新編譯。

我得到的錯誤是這樣的:

Error   1   CA0058 : The referenced assembly 'Library1, Version=1.0.4146.17993
, Culture=neutral, PublicKeyToken=d9c65edd2096ad48' could not be found. This assembly
is required for analysis and was referenced by:
D:\Work\Source Code\Library\Library2\bin\Release\Library2.dll.

版本1.0.4146.17993不正確 - DLL具有更高的值。 DLL被設置為Copy Local,因為我們提供的軟件需要它(不要問為什么)。 在本地復制的DLL是具有更高版本號的DLL,這是我們想要的版本號。

到目前為止,我已經嘗試更改引用以將“特定版本”標志設置為false但這沒有幫助。

使用1.0.*語法時VS生成的版本號不一定按順序遞增。 文檔有這樣說(強調添加):

您可以指定所有值,也可以使用星號( 接受默認的內部版本號,修訂號或兩者 例如,[assembly:AssemblyVersion(“2.3.25.1”)]表示2為主要版本,3表示次要版本,25表示構建號,1表示版本號。 諸如[assembly:AssemblyVersion(“1.2。 ”)]之類的版本號指定1作為主要版本,2作為次要版本,並接受默認的構建和修訂號。 諸如[assembly:AssemblyVersion(“1.2.15。*”)]之類的版本號指定1作為主要版本,2作為次要版本,15作為構建號,並接受默認修訂號。 默認內部版本號每天遞增。 默認修訂號是隨機的。

如果您完全正確地進行版本控制至關重要,我強烈建議您使用第三方解決方案。 Build Version Increment加載項非常出色。

您想要做的是自己管理程序集版本。 只有在對程序集的公共接口進行重大更改時才會增加此值。 更改此屬性會使程序集與引用它的其他程序集不兼容,即使您沒有更改代碼中的內容也是如此。 相反,您唯一想要自動遞增的是程序集文件版本。 與程序集版本不同,CLR不會檢查此屬性以確定兼容性。

Build Version Increment加載項為您提供了一種細粒度的控制,可以對增加的內容進行精細控制。 這可能應該包括在VS中。

這實際上是一個非常深入的問題,我希望有人能夠為您詳細解答這個問題,但是在您控制了匯編信息后我的2美分是您應該使用Nuget來管理您的依賴關系。 這樣,當團隊A發布程序集X的v2時,他們所做的只是將它放在你的Nuget repo(可能是網絡共享)上,然后你基本上可以右鍵單擊<使用DLL的項目中的<update。

我還建議查看http://semver.org/並使用語義版本控制,如果你不想按照這樣的系統(或為你的商店建立一個類似的標准),它甚至可能不值得嘗試版本你的DLL你只會給自己帶來巨大的麻煩。 但是,使用語義版本控制將使您的版本號實際上意味着什么。 而且不只是感覺被標記到當前版本。

請注意,修訂號不是隨機的。 這是構建的時間。 Build是日期編號。

請參閱VisualStudio:將構建版本轉換為日歷日期

刪除您的引用(在使用它的項目中)並通過指向項目引用類型重新執行它。

PS:如果在添加引用時,選擇瀏覽並指向dll將始終存在的位置,引用將不會被破壞!

   > However, the code library has many hundreds of DLLs,

如果您可以將所有源項目及其生成的dll-s具有相同的版本號,則可以將versionnumber放入一個文件中,該文件在共享AssemblyInfo.cs中描述的所有dll之間共享 因此,如果存在新的版本/版本,您(或您正在使用的版本號生成器)必須僅更新一個文件。

這不能回答您的原始問題,但可能是依賴問題的簡單工作。

暫無
暫無

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

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