C# 为什么.NETFramework4.0中的mscorlib版本是4.6.x?

C# 为什么.NETFramework4.0中的mscorlib版本是4.6.x?,c#,.net-4.0,mscorlib,C#,.net 4.0,Mscorlib,我运行针对.NETFramework 4.0的应用程序。然后我打开模块检查使用了哪些库。我看到mscorlib版本是4.6.96.0。但在输出窗口中,我可以看到Framework4.0已加载?我相信该应用程序使用.NETFramework4.0。我不明白为什么mscorlib的版本是4.6.96.0。为什么呢?“Build by:NETFXREL2STAGE”是什么意思?请看屏幕截图 该调试器窗口显示DLL的文件版本。作为非托管资源嵌入到DLL(版本资源)中,每个正确构建的可执行文件都有一个。对

我运行针对.NETFramework 4.0的应用程序。然后我打开模块检查使用了哪些库。我看到mscorlib版本是4.6.96.0。但在输出窗口中,我可以看到Framework4.0已加载?我相信该应用程序使用.NETFramework4.0。我不明白为什么mscorlib的版本是4.6.96.0。为什么呢?“Build by:NETFXREL2STAGE”是什么意思?请看屏幕截图

该调试器窗口显示DLL的文件版本。作为非托管资源嵌入到DLL(版本资源)中,每个正确构建的可执行文件都有一个。对于.NET程序集,它由程序集链接器从[]属性生成。DLL的每个版本的文件版本都会更改。它只充当文档角色,不在运行时使用。与.NET相比。注意它是一个字符串而不是一个数字

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

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


请参阅Stackoverflow问题,这意味着我应该检查输出窗口(而不是模块窗口)以检查目标框架。否。只有通过使用ildasm.exe并查看清单中的TargetFrameworkAttribute,才能知道程序员最初的目标。它不必存在。您在运行时实际得到的只是您在机器上实际安装的。通常是更高的版本号。