我遇到的问题是使AssemblyVersion与我正在处理的类库中的AssemblyFileVersion属性不同。
所以,我尝试创建一个空的(除了Class1.cs)类库,看看它是否是某个设置,但我得到了同样的行为。
似乎只是忽略了AssemblyVersion属性。
这是我的AssemblyInfo.cs文件中的相关位...
[assembly: AssemblyVersion("0.1")]
[assembly: AssemblyFileVersion("1.1.0.9")]
以下是Windows资源管理器中的内容......
是否有某个设置可以控制它?
修改 我找到了一个存在差异的文件,因此不是Windows资源管理器显示两个不同字段的相同值,这与从编译器/链接器生成DLL的方式有关...
答案 0 :(得分:5)
这里的关键问题是Windows对托管程序中的属性一无所知。它读取非托管文件版本资源。使用/ win32res编译选项嵌入C#程序集的那个。如果您不使用该选项,则编译器会自动生成它,使用您在AssemblyInfo.cs中指定的程序集属性值来创建资源。
但是,非托管文件版本资源没有标准字段来指定[AssemblyVersion]之类的内容。只有[AssemblyFileVersion]。编译器实际发出它,版本资源是可扩展的。但Windows XP是仍然显示这些自定义字段的最后一个版本。您可以通过使用File + Open + File在Visual Studio中打开程序集来查看非托管资源。
是的,蹩脚而烦人。 MS的Windows组不喜欢迎合托管代码。
答案 1 :(得分:4)
是的,找到了答案: - )
您需要编辑AssemblyInfo.cs并在底部添加以下内容
[assembly: AssemblyInformationalVersion("4.4.4.4")]
该值显示在资源管理器中的“产品版本”中。 AssemblyInformationalVersion是可选的。如果没有给出,则使用AssemblyVersion。
有关此主题的更多信息,请参见here
答案 2 :(得分:1)
检查我的电脑,它确实可以正常工作。
浏览器:
属性:
其他不同的是:
如果有帮助,我的Windows explorer.exe版本是6.1.7601.17567。 Windows 7 SP1
使用
在Visual Studio上自行测试[assembly: AssemblyVersion("2.2.2.2")]
[assembly: AssemblyFileVersion("3.3.3.3")]
给出结果: 所以看起来Visual Studio在这里做错了。