2012-04-19 64 views
43

它說,在AssemblyInfo.cs中C#項目,它可能與*的AssemblyInfo版本信息,星號表示

// Version information for an assembly consists of the following four values: 
// 
//  Major Version 
//  Minor Version 
//  Build Number 
//  Revision 
// 
// You can specify all the values or you can default the Revision and Build Numbers 
// by using the '*' as shown below: 
[assembly: AssemblyVersion("1.0.0.0")] 
[assembly: AssemblyFileVersion("1.0.0.0")] 

我改成了這個指定版本信息:

[assembly: AssemblyVersion("1.0.*.*")] 
[assembly: AssemblyFileVersion("1.0.*.*")] 

,這是錯誤我從編譯器得到:

error CS0647: Error emitting 'System.Reflection.AssemblyVersionAttribute' attribute -- 'The version specified '1.0.*.*' is invalid' 
warning CS1607: Assembly generation -- The version '1.0.*.*' specified for the 'file version' is not in the normal 'major.minor.build.revision' format 

它是如何工作的?

回答

61

語法(見MSDN)爲 「自動」 集結號可以是:

[assembly: AssemblyVersion("1.0.0.*")] 

或:

[assembly: AssemblyVersion("1.0.*")] 

*意味着後這一切都是自動。你不能有自動構建號碼和固定的版本號,然後這個語法是不正確的:

[assembly: AssemblyVersion("1.0.*.0")] 

對於AssemblyFileVersionAttribute你不能這樣,你必須提供一個完整和有效的版本號使用*特殊字符。請注意,如果您不提供AssemblyFileVersionAttribute,那麼您將自動獲得正確的FileVersionInfo(使用相同版本的AssemblyVersionAttribute)。只有在需要設置不同版本時,才需要指定該屬性。

+3

不適用於我。 DLL上的文件版本始終爲1.0.0.0,DLL上的產品版本爲1.0。*或1.0.0。*? – mare 2012-04-19 15:05:55

+1

,它也顯示相同的無效錯誤 – shyamnathan 2014-01-24 19:43:46

+1

@shyamnathan是的,每個部分必須是一個16位無符號整數 - 1,所以你不能使用任何東西比'*'(只在'xy *'或'xyz *'形式)當然,除非它是一種佔位符,並且您應用某種預處理(如果您沒有共享的程序集信息並且希望在不同的程序集中保持版本對齊,則很有用)。 ,任何無效的版本號都會給出該信息,以原因爲準。 – 2014-01-24 20:10:06

26
[assembly: AssemblyVersion("1.0.*")] 
//[assembly: AssemblyFileVersion("1.0.*")] 

只記得對AssemblyFileVersion行進行註釋,否則自動生成的程序集版本將始終爲「1.0.0.0」。

+1

他爲什麼要這樣做? – Default 2012-04-19 14:19:45

+0

自動生成的程序集版本將始終爲「1.0.0.0」,這發生在我的解決方案中。 – chamos 2012-04-19 14:37:38

+0

讓我建議你編輯你的答案並添加這些信息。 「它可能無法按預期工作」並不完全解釋爲什麼OP應該遵循這一建議,與[Adriano](http://stackoverflow.com/a/10229738/238902)給出的答案相比。 – Default 2012-04-19 14:47:04

3

在我看來,使用[assembly: AssemblyVersion("x.y.z.*")],Patch不應該自動編號。例如:

[裝配:的AssemblyVersion( 「1.2.3。*」)]

AssemblyVersion

使用 '*' 是好的,但遵循seemver.org我們應該使用*revision部分來自版本結構<major version>.<minor version>.<build number>.<revision>)。

給定一個版本號MAJOR.MINOR.PATCH,遞增:

當你做出不兼容的API改變

主要版本,

MINOR版本,當你在一個向後兼容的方式增加功能,和

當您做出向後兼容的錯誤修復時的修補程序版本。