3

这是一个简单的问题。我一直在用 .NET 4.5(现在是 Beta)编写软件。运行该软件需要什么版本的 .NET 运行时?是4.5吗?年纪大点?

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

4

5 回答 5

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

于 2012-05-03T17:14:32.850 回答
2

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

首先是安装页面

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

最大的问题是您无法在 Windows XP 上运行 4.5 - 它太旧了(> 10 年)
所以如果这将成为您的环境中的一个问题,请不要假设您可以!

4.5 要求满足以下条件之一:

  • 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 位版本)
于 2012-09-04T19:21:08.647 回答
1

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

如果你用 C# 编码,编译器会发生变化,但它会编译 CLR 4.0 IL。

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

于 2012-05-03T17:13:07.907 回答
1

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

于 2012-05-03T17:16:36.133 回答
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 应用程序。

于 2012-05-03T17:16:59.373 回答