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

Why mscorlib version is 4.6.x in .NET Framework 4.0?

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

该调试器 window 显示 DLL 的 文件版本 。作为非托管资源嵌入到 DLL 中,即 VERSION 资源,每个正确构建的可执行文件都有一个。对于 .NET 程序集,它是从 [ AssemblyFileVersion ] attribute by the assembly linker. The file version changes for every revision of the DLL. It serves only a documentary role, it is not used at runtime. Compare to the .NET FileVersionInfo.FileVersion property 生成的。请注意它是一个字符串而不是一个数字。

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

NETFXREL2STAGE 是创建该文件的雷德蒙德的构建机器。不知道为什么 Microsoft 认为包含该信息很有用。

查看 Whosebug 问题 What are differences between AssemblyVersion, AssemblyFileVersion and AssemblyInformationalVersion?