2

我在使 AssemblyVersion 与我正在处理的类库中的 AssemblyFileVersion 属性不同时遇到问题。

所以,我尝试创建一个空的(除了 Class1.cs)类库来查看它是否是某个地方的设置,但我得到了相同的行为。

似乎 AssemblyVersion 属性只是被忽略了。

这是我的 AssemblyInfo.cs 文件中的相关位...

[assembly: AssemblyVersion("0.1")]
[assembly: AssemblyFileVersion("1.1.0.9")]

这是Windows资源管理器中的外观...

Windows 资源管理器屏幕抓取

是否有某个地方可以控制这个?

编辑: 我发现一个文件存在差异,所以不是 Windows 资源管理器为两个不同的字段显示相同的值,这与从编译器/链接器生成 DLL 的方式有关......

在此处输入图像描述

4

3 回答 3

5

这里的关键问题是 Windows 对托管程序中的属性一无所知。它读取非托管文件版本资源。使用 /win32res 编译选项嵌入到 C# 程序集中的那个。如果您不使用该选项,编译器会默认自动生成它,使用您在 AssemblyInfo.cs 中指定的程序集属性值来创建资源。

但是非托管文件版本资源没有标准字段来指定 [AssemblyVersion] 之类的任何内容。仅 [AssemblyFileVersion]。编译器实际上发出它,版本资源是可扩展的。但 Windows XP 是仍然显示这些自定义字段的最后一个版本。您可以通过在 Visual Studio 中使用 File + Open + File 打开程序集来查看该非托管资源。

是的,蹩脚和烦人。MS 的 Windows 小组不喜欢迎合托管代码。

于 2011-10-25T09:55:53.650 回答
4

对,找到了答案:-)

您需要编辑 AssemblyInfo.cs 并在底部添加以下内容

[assembly: AssemblyInformationalVersion("4.4.4.4")]

该值显示在资源管理器的“产品版本”中。AssemblyInformationalVersion 是可选的。如果未给出,则使用 AssemblyVersion。

有关此主题的更多信息在这里

于 2011-10-25T10:13:00.030 回答
1

检查我的电脑,它实际上工作正常。

探险家:

在此处输入图像描述

特性:

在此处输入图像描述

其他不同的是: 在此处输入图像描述

如果有帮助,我的 windows explorer.exe 版本是 6.1.7601.17567。视窗 7 SP1

自己在 Visual Studio 上测试这个

[assembly: AssemblyVersion("2.2.2.2")]
[assembly: AssemblyFileVersion("3.3.3.3")]

给出了结果: 在此处输入图像描述 所以看起来 Visual Studio 在这里做错了。

于 2011-10-25T09:21:41.830 回答