使用.NET 4.5编写的软件需要什么版本的.NET运行时?

时间:2012-05-03 17:11:00

标签: .net windows .net-4.5

这是一个简单的问题。我一直在用.NET 4.5(现在是Beta)编写软件。运行此软件需要什么版本的.NET运行时?是4.5吗?有些老了吗?

此外,.NET更新是Windows Update的一部分吗?

5 个答案:

答案 0 :(得分:7)

要运行4.5个已编译的程序集,必须安装4.5框架。 4.5安装是一个就地升级,主要是向前兼容4.0,但绝对不向后兼容。

一个可以让你绊倒的特殊地方是类型转发器。 4.5框架包含大量新型转发器(超过1,100个)。类型转发器是程序集声明类型从程序集A移动到程序集B的一种方式.CLR将静默地将对给定类型的任何引用从A重定向到B.

针对4.5编译的程序集将发出对该类型的引用,就好像它在程序集B中存在一样。如果然后针对4.0安装运行该程序集,它将期望该类型在程序集B中,并且它将不会。结果将是类型加载异常。

具体例子:

static void Main(string[] args)
{
    var attrib = new ExtensionAttribute();
    Console.WriteLine(attrib);
}

在4.5框上编译该代码,然后尝试在4.0框上运行它。结果将是类型加载异常。 ExtensionAttribute类型从4.0中的System.Core移动到4.5

中的mscorlib

答案 1 :(得分:2)

也许更重要的问题是" .NET 4.5需要什么操作系统?"

首先是安装页面

http://msdn.microsoft.com/en-us/library/5a4x27ek

最大的问题是你无法在Windows XP上运行4.5 - 它太旧了(> 10年)
因此,如果您的环境出现问题,请不要认为可以。

4.5 requires以下之一:

  • Windows 8(32位和64位版本)
  • Windows 7(32位和64位版本)
  • Windows Vista SP2(32位和64位版本)

  • Windows Server 2012(64位版本)
  • Windows Server 2008 R2(64位版本)
  • Windows Server 2008 SP2(32位和64位版本)

答案 2 :(得分:1)

.Net 4.0运行时。 4.5更多.Net库的优点。 CLR版本没有变化。

如果用C#编码,编译器正在改变,但它编译的是CLR 4.0 IL。

http://www.infoq.com/news/2012/04/net-4-5-multitargeting

答案 3 :(得分:1)

这取决于您是否正在编写Metro风格的应用程序。对于Metro风格的应用程序(Windows 8),您实际上正在使用.NET 4.5框架的一个子集以及一个特殊的仅限Metro的运行时。对于所有其他应用程序,.NET 4.5将.NET 4.0运行时与其他库一起使用(类似于.NET 3.0和.NET 3.5能够在.NET 2.0运行时上运行)。

答案 4 :(得分:1)

CLR版本为1.0,1.1,2.0和4.0。 .NET Framework的其他版本只提供其他类型。 .NET 3和3.5在CLR 2.0上运行。 .NET 4.5在CLR 4上运行。

注意:您仍然需要.NET 4.5来运行4.5个应用程序。