为什么mscorlib版本在.NET Framework 4.0中是4.6.x?

时间:2015-09-12 10:27:49

标签: c# .net-4.0 mscorlib

我运行针对.NET Framework 4.0的应用程序。然后我打开模块来检查使用了哪些库。我看到mscorlib版本是4.6.96.0。但在输出窗口中,我可以看到Framework 4.0已加载?我相信该应用程序使用.NET Framework 4.0。我不明白为什么mscorlib的版本是4.6.96.0。为什么会这样?什么意思“建立:NETFXREL2STAGE” - 请看截图。 screenshot

1 个答案:

答案 0 :(得分:6)

该调试器窗口显示DLL的文件版本。作为DLL中的非托管资源嵌入,VERSION资源,每个正确构建的可执行文件都有一个。对于.NET程序集,它由程序集链接器根据[AssemblyFileVersion]属性生成。每个DLL版本的文件版本都会更改。它仅用于记录角色,不在运行时使用。与.NET FileVersionInfo.FileVersion property比较。请注意它是一个字符串而不是数字。

与[AssemblyVersion]属性不同,CLR用于确定程序集的真正重要的属性是兼容的。对于4.x框架中的所有mscorlib.dll版本,它是4.0.0.0。对于.NET版本2.0到3.5SP1,它是2.0.0.0。您无法在该对话框中看到它。当您查看“详细信息”选项卡时,不是使用资源管理器,这是一个非常棘手的问题。

NETFXREL2STAGE是Redmond中构建该文件的构建机器。不知道为什么微软认为包含这些信息是有用的。

请参阅Stackoverflow问题What are differences between AssemblyVersion, AssemblyFileVersion and AssemblyInformationalVersion?