.NET:在AssemblyVersionAttribute大版本号(.NET: Large rev

2019-07-30 21:40发布

我们有版本的约定我们的基础,因为[大] [未成年人]。[微]。[修改],如2.1.2.33546。

我们的构建脚本会自动更新包含AssemblyInfo.cs文件

[assembly: AssemblyVersion("x.y.z.w")]

为了嵌入到组件的版本号码。

但是,我们的Subversion版本库刚刚达成的修订#65535,这打破了我们的构建。

事实证明,在版本号每个数字都有65534的最大值(可能是由于Windows的限制)。

你有没有遇到过这个问题吗? 任何一个优秀的解决方案/解决方法?

我们喜欢嵌入版本数的方案,我们显然不能简单的复位我们的Subversion服务器:-)

Answer 1:

多一点背景资料:

为什么建限于65535号?

由于这是不太可能得到改变,你的选择是:

  • 就拿修订模65535,这意味着你又回到了1
  • 使用微场版本号通过将修订通过1000拆分的版本号这意味着你的版本可能是1.0.65.535
  • 不要SVN版本的存储在的AssemblyVersion,而是在AssemblyInformationalVersion 。 这样,你的应用程序仍然可以访问它用于显示目的,但不能使用Windows资源管理器了快速检查SVN版本的
  • 不要SVN版本的存储在的AssemblyVersion,而是在AssemblyProduct或AssemblyDescription领域。 同样,这样你的应用程序仍然可以访问它,但也Explorer现在将显示在属性表。


Answer 2:

一个选择是只使用[AssemblyFileVersion] ; 这仍然提出了警告,但它会建立,至少包括:

[assembly: AssemblyFileVersion("1.0.0.80000")]


Answer 3:

我们决定使用相同的约定,并且由于Windows版本号的限制,我们选择了放弃我们的版本号的“微”的一部分,以保持版本号。 我们的版本号现在[major].[minor].[revision / 10000].[revision % 10000]所以从修订65535建造的组件具有版本2.01.6.5535。



Answer 4:

根据MSDN的AssemblyVersionAttribute版本号的组件被限制为UInt16.MaxValue - 1 由汇编元数据 ,即你不能在汇编文件较大的数字存储。 该文件版本,马克Gravell建议,可能是够你,这取决于谁将会阅读您的版本号。



文章来源: .NET: Large revision numbers in AssemblyVersionAttribute