.NET 4.5会引入新版本的CLR吗?

时间:2012-01-10 20:55:07

标签: .net clr .net-4.5

过去并非每个新版本的.NET都带有新版本的CLR。我知道.NET 1.0,1.1,2.0和4.0,但.NET 3.0和3.5没有。

.NET 4.5会引入新的CLR吗?如何判断是否有新的CLR?

7 个答案:

答案 0 :(得分:28)

是的,.NET 4.5有一个品牌打击CLR的新版本,你可以阅读有关改进的内容;

http://blogs.microsoft.co.il/blogs/sasha/archive/2011/09/17/improvements-in-the-clr-core-in-net-framework-4-5.aspx

澄清;这是CLR的新版本,实际上替换 4.0版本,因此无论是将其称为更新还是新的CLR都是有争议的。

要告诉您正在运行的CLR版本,请使用

System.Runtime.InteropServices.RuntimeEnvironment.GetSystemVersion()

答案 1 :(得分:17)

不,它仍然是版本4.0.30319。 clr.dll和朋友的新版本将替换您计算机上的现有版本。与.NET 3.0,3.5和3.5SP1中使用的方案相同。检查是否安装了4.5需要与这些版本相同的方法,即check the registry

答案 2 :(得分:14)

是。从4.0.30319.2694.0.30319.17379的{​​{3}}。因此,CLR是新的,但它与.NET 4.0 CLR向后兼容。您不需要重新编译为.NET v4.0编写和编译的任何代码。

来自MSDN上的version of the CLR changes页:

  

.NET Framework 4.5 RC是一种就地更新,它取代了计算机上的.NET Framework 4。安装此更新后,.NET Framework 4应用程序应继续运行而无需重新编译。但是,.NET Framework中的某些更改可能需要更改您的应用程序代码。

此外,来自.NET Framework Versions and Dependencies

  

.NET Framework 4.5是一个替换.NET Framework 4的就地更新(而不是并行安装)。我们的目标是使.NET 4.5完全向后兼容为.NET 4构建的应用程序

有些更改向后兼容。请参阅MSDN上的 .NET Framework blog 页面。

Microsoft的官方指南和良好的编码实践不是检测CLR的特定版本。相反,您应该检测是否存在某些功能。而不是

public static bool IsDotNet45()
{
    return Environment.Version.Major == 4 &&
           Environment.Version.Revision > 17000;
}

做类似的事情:

public static bool SupportsReflectionContext()
{
    // Class "ReflectionContext" exists from .NET 4.5 onwards.
    return Type.GetType("System.Reflection.ReflectionContext", false) != null;
}

答案 3 :(得分:2)

虽然我怀疑在问题出现时它的当前格式是否可用,但这里是MSDN上的CLR Guide,它显示了所有的Framework版本和它们包含的CLR版本。我发现它非常有用,所以我想我会分享。

.NET 4.5 旁边,它声明它包含 CLR 4

答案 4 :(得分:1)

.NET 4和.NET 4.5(包括4.5.1和4.5.2)位于CLR版本4.0

  

更多细节:https://msdn.microsoft.com/en-us/library/8bs2ecf4(v=vs.110).aspx

答案 5 :(得分:0)

.NET Framework 4.5就像.NET Framework 4的Service Pack,具有一些附加功能。

答案 6 :(得分:0)

Scott Hanselman在他的博客上发表了一篇关于这个问题的文章。你可以在这里找到它:

http://www.hanselman.com/blog/NETVersioningAndMultiTargetingNET45IsAnInplaceUpgradeToNET40.aspx

缺点是CLR有更新,可以提高性能并添加新库。 .NET 4.5使用的CLR与.NET 4兼容。它被认为是次要更新。这些次要更新是Microsoft称为就地更新的内容。