2012-07-15 34 views
3

當使用MSBuild構建程序集版本時,是否有任何方法使用自定義格式的程序集版本?MSBuild - 自定義程序集版本格式

例如,我們試圖使用一個版本,如「0.16.10r2.10717」但我們得到這個錯誤:

error emitting 'system.reflection.assemblyversionattribute' -- The version specified '0.16.10r2.10717' is invalid.

我在網上搜索周圍,但似乎沒有人要求的解決方案這個的。可能嗎?

我們使用Microsoft Visual Studio 2010和FinalBuilder 7來構建我們的項目。

回答

13

AssemblyVersionAssemblyFileVersion都必須由最多四個整數組成,它們是週期分隔的,每個整數不大於65534(UInt16.MaxValue-1)。任何以下是有效的(C#語法):

[assembly: AssemblyVersion("1.2.3.4")] 

// Let the compiler generate the build and/or revision numbers 
[assembly: AssemblyVersion("1.2.3.*")] 
[assembly: AssemblyVersion("1.2.*")] 

還有另一種屬性,AssemblyInformationalVersion,接受字符串作爲版本;當您想要使用更復雜的字符串時(尤其是在包含來自DVCS的提交ID時)可以使用它。

// Use complex version number 
[assembly: AssemblyInformationalVersion("0.16.10r2.10717")] 

// Include Git commit ID 
[assembly: AssemblyInformationalVersion("1.2b1-g39d1c0f")] 

簡言之,difference between these attributes是:

  • 的AssemblyVersion:這是用作組件的CLR版本。當程序集具有強名稱時,這是針對驗證的版本。

  • AssemblyFileVersion:這是Win32文件版本資源,並顯示在Windows資源管理器的程序集屬性中。

  • AssemblyInformationalVersion:這可以在運行時通過Application.ProductVersion屬性訪問。它也用於Application.UserAppDataDirectory路徑。

相關問題