在使用VS2013构建的C#项目中,我可以将它放在AssemblyInfo.cs文件中:
var request = 'randomcode';
$.post('../php/forms/postrequest.php', 'type=' + request, function (response) {
var accesscode = response;
alert(accesscode);
});
当我对另一个项目中的可执行文件使用FileVersionInfo.GetVersionInfo .NET API时,我发现这些值已报告:
当我在使用VS2015构建的C#项目中使用相同的属性和字符串值时,ProductMajorPart和ProductMinorPart属性将报告为零!
有人知道行为改变是否是故意的?
我已检查过可执行文件中找到的二进制文件版本信息,虽然版本信息中的字符串值与两个文件中的预期值一致,但VS2015可执行文件在VS_FIXEDFILEINFO.dwProductVersionMS和VS_FIXEDFILEINFO.dwProductVersionLS字段中的值为零。 / p>
答案 0 :(得分:1)
我可以确认此案例的行为更改,并观察到如果AssemblyInformationalVersion
是规范格式,例如"7.1.0.0"
那么它在所有版本中都按预期工作,即产品版本主要填写/ minor / build / revision字段。
对于背景,docs for AssemblyInformationalVersion实际上指定了:
此类定义的属性将附加版本信息附加到程序集。如果将此属性应用于程序集,则可以在运行时使用Application.ProductVersion属性获取它指定的字符串。
[...]虽然您可以指定任何文本,但如果字符串不是使用程序集版本号[...]
所使用的格式,则会在编译时显示警告消息
从上面开始:
除了可以检索字符串本身之外,没有正式的保证;
警告不要使用自由格式字符串。
您可能,甚至应该在VS connect上提交错误报告,尽管我的感觉是MS在AssemblyInformationalVersion中将自由格式字符串视为不受支持的"意外的"功能,并且可能不会考虑将未记录的行为更改为" bug"适当的。
并非直接相关,但此VS 2010错误报告Localized build with free form AssemblyInformationalVersion causes ALINK warning AL1053已被MS关闭为won't fix
。
同样,Why is warning CS1607 “The version specified for the 'product version' is not in the normal 'major.minor.build.revision' format” generated?上接受的答案基本上建议,一旦您偏离标准major.minor.build.revision
格式,您几乎可以独立完成。