2014-03-12 71 views
0

可能是一個奇數的位,但目前正在考慮是否可以爲項目的Assembly Information實現自定義格式。C#應用程序 - 自定義彙編版本格式

在給你一個4數字系統的選項大會的信息,所以major.minor.build.revision

我一直在問,試圖改變這種到5號系統,所以像1.2.34.556.1234並想知道這是否可能。

我只是嘗試過修改它編程,但只是返回錯誤:

Error emitting 'System.Reflection.AssemblyVersionAttribute' attribute -- 'The version specified '1.2.34.556.1234' is invalid' 
+1

這是不可能的。 –

+0

不這麼認爲....我想可以保存僞造的5位數字版本在另一個領域... – Thewads

+0

你應該看看這個真棒回答:http://stackoverflow.com/a/802038/682105 – khellang

回答

3

爲了這個目的,我更喜歡使用的AssemblyFileVersion,而不是AssemblyVersion

前者具有一種開放格式,並且可以幾乎容納任何附加信息,而後者,AssmeblyVersion旨在用於由.NET框架和強制如果梗死其產生編譯器錯誤嚴格的編號方案。

[assembly: AssemblyVersion("4.0.*")] //Strict Format, for framework use 
[assembly: AssemblyFileVersion("4.0.20.110708")] //Flexible Format more suitable for product versions 

更新: 每OP評論,這裏是如何可以通過反射很容易地訪問此屬性:

Assembly assembly = Assembly.GetExecutingAssembly(); 
FileVersionInfo fvi = FileVersionInfo.GetVersionInfo(assembly.Location); 
string version = fvi.FileVersion; 
+0

對於這種情況,您是否可以通過反射以編程方式輕鬆訪問'AssemblyFileVersion'? – Thewads

+0

是的,請參閱我在答案中的更新。 –

1

這是行不通的,因爲AssemblyVersionAttribute構造中需要長達4個值字符串:

The format of the version string is: major. minor. build. revision.

MSDN Link

0

AssemblyVersionAttribute轉換爲Version class

它只有主要,次要,構建版本號:你不能使用5個數字。

如果您想使用更多的數字可以使用AssemblyInformationalVersion

它不是一個Version Class但對於一個更具描述性的集版本一string

[assembly: AssemblyInformationalVersion("1.12.0.3050.1234 Release - Any CPU")] 

但你無論如何都應該提供AssemblyVersion和/或AssemblyFileVersion沒有第五個號碼