Ian*_*oyd 4 random visual-studio build-numbers
我知道Visual Studio无法以人们期望的方式增加构建号,但它支持随机化构建号:
我的AssemblyInfo.cs文件包含:
// 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 Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyFileVersion("1.0.*")]
Run Code Online (Sandbox Code Playgroud)
然而它给出了我看来非感性的结果(甚至允许Visual Studio的伪随机版本号):

所以更简单的问题是:
我投入了什么
AssemblyInfo.cs让它发挥作用?
从MSDN(为清晰起见重新格式化):
您可以指定所有值,也可以使用星号(*)接受默认的内部版本号,修订号或两者.例如,
Run Code Online (Sandbox Code Playgroud)[assembly:AssemblyVersion("2.3.25.1")]表示2为主要版本,3表示次要版本,25表示内部版本号,1表示版本号.版本号如
Run Code Online (Sandbox Code Playgroud)[assembly:AssemblyVersion("1.2.*")]指定1作为主要版本,2指定为次要版本,并接受默认的构建和修订号.版本号如
Run Code Online (Sandbox Code Playgroud)[assembly:AssemblyVersion("1.2.15.*")]指定1作为主要版本,2作为次要版本,15作为构建号,并接受默认修订号.
默认内部版本号每天递增.默认修订号是随机的.
我认为这意味着版本号是:
[1.0.0.0]
major.minor.build.revision
Run Code Online (Sandbox Code Playgroud)
而
[1.0.0.*]
major.minor.build.[random]
Run Code Online (Sandbox Code Playgroud)
和
[1.0.*]
major.minor.[daynumber].[random]
Run Code Online (Sandbox Code Playgroud)
Cod*_*ray 12
我99%确定您遇到的问题是由此行造成的:
[assembly: AssemblyFileVersion("1.0.*")]
Run Code Online (Sandbox Code Playgroud)
问题是Visual Studio不支持自动递增AssemblyFileVersion,只有AssemblyVersion.所以其余的代码应该没问题.尝试简单地评论第二行,看看你是否得到了你期望的结果.您的文件和产品的所有版本信息都应该是等效的.
我不知道这到底在哪里正式记录(除了您尝试在"项目属性"下的"程序集信息"对话框中输入"文件版本"字段的星号时收到的错误消息),但它工作正常在我可以访问的每台机器上都有这个.
如果你完全厌倦了Visual Studio在留给自己的设备时做的事情(你提到它的伪随机数的愚蠢),试试这个加载项的小宝石.它会改变你的生活.
屏幕截图显示了您使用shell属性表扩展处理程序,该处理程序显示嵌入在大多数EXE和DLL文件(包括.NET文件)中的非托管版本资源.不幸的是,从Vista开始,该处理程序不再显示该资源中的可选字段.ProductVersion字段是标准字段,但不是 [AssemblyVersion].您必须在AssemblyInfo.cs中添加相应的属性.例如:
[assembly:AssemblyInformationalVersion("1.2.3.4")]
不幸的是,不是一个伟大的名字匹配.当它丢失时,编译器将复制[AssemblyVersion]的值,这就是你最终得到星号的方式.
编译器实际上会在资源中发出额外的字段.您可以使用File + Open + File查看它,选择您的程序集,打开Version节点并双击资源#1:

这是由以下产生的:
[assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyInformationalVersion("1.2.3.4")]
[assembly: AssemblyFileVersion("1.0.0.0")]
Run Code Online (Sandbox Code Playgroud)
它在那里,你在资源管理器中看不到.真可惜,希望有一天他们会解决这个问题.另请注意生成的[AssemblyVersion],版本号是18404.它不是随机的,我在上午10:13建立了这个EXE.那是从午夜起18404*2秒.
| 归档时间: |
|
| 查看次数: |
3132 次 |
| 最近记录: |