正在忽略AssemblyFileVersion属性

Ant*_*ott 2 .net assemblyversionattribute

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

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

看来AssemblyVersion属性似乎被忽略了.

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

[assembly: AssemblyVersion("0.1")]
[assembly: AssemblyFileVersion("1.1.0.9")]
Run Code Online (Sandbox Code Playgroud)

以下是Windows资源管理器中的内容...

Windows资源管理器屏幕抓取

有什么设置可以控制这个吗?

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

在此输入图像描述

Han*_*ant 5

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

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

是的,跛脚和烦人.MS的Windows组不喜欢迎合托管代码.