版本兼容性

向后兼容性表示为某个平台的特定版本开发的应用程序将在该平台的更高版本上运行。 .NET Framework 尝试最大程度地支持后向兼容性:为某个版本的 .NET Framework 编写的源代码应在更高版本的 .NET Framework 上编译,而在某个版本的 .NET Framework 上运行的二进制文件的行为方式应与其在更高版本的 .NET Framework 上的行为方式相同。

应用程序的版本兼容性

默认情况下,应用将在其目标 .NET Framework 版本上运行。 如果该版本不存在且应用配置文件未定义支持的版本,则可能出现 .NET Framework 初始化错误。 在此情况下,尝试运行应用程序将失败。

若要定义运行应用的特定版本,请将一个或多个 <supportedRuntime> 元素添加到应用的配置文件中。 每个 <supportedRuntime> 元素都列出了支持的运行时版本,第一个元素指定了优先级最高的版本,最后一个元素指定了优先级最低的版本。

<configuration>
   <startup>
      <supportedRuntime version="v2.0.50727" />
      <supportedRuntime version="v4.0" />
   </startup>
</configuration>

有关详细信息,请参阅如何:将应用配置为支持 .NET Framework 4 或 4.x

组件的版本兼容性

应用可以控制运行它的 .NET Framework 的版本,但组件不能。 因为组件和类库在特定应用的上下文中加载,所以它们会自动在运行应用的 .NET Framework 版本上运行。

由于存在此限制,因此兼容性保证对组件特别重要。 从 .NET Framework 4 开始,你可以通过将 System.Runtime.Versioning.ComponentGuaranteesAttribute 特性应用于某个组件,来指定希望该组件与多个版本的兼容程度。 工具可使用此特性来检测组件的将来版本中的兼容性保证的潜在冲突。

向后兼容性

.NET Framework 4.5 及更高版本与使用早期版本的 .NET Framework 生成的应用向后兼容。 换句话说,使用早期版本的 .NET Framework 生成的应用和组件将运行,而无需在 .NET Framework 4.5 及更高版本上进行修改。 但在默认情况下,应用在其进行开发的公共语言运行时版本上运行,因此必须提供配置文件,使应用能在 .NET Framework 4.5 及更高版本上运行。 有关详细信息,请参阅本文前面的应用的版本兼容性一节。

实际上,.NET Framework 中看似无关紧要的更改和编程技术上的更改会损坏此兼容性。 例如,.NET Framework 4.5 中的性能改进会公开早期版本中未出现的争用条件。 同样,使用 .NET Framework 程序集的硬编码路径,执行与特定版本的 .NET Framework 的相等比较,以及使用反射获取私有字段的值都不是向后兼容的做法。 此外,每个版本的 .NET Framework 都包含 Bug 修复和可能影响某些应用程序和组件的兼容性的安全相关更改。

如果应用或组件在 .NET Framework 4.5 或更高版本上未按预期方式运行,请使用以下检查表:

并行执行

如果找不到解决问题的适当方法,请记住,.NET Framework 4.5(或其单点版本之一)与版本 1.1、2.0 和 3.5 并行运行,并且是取代版本 4 的就地更新。 对于以版本 1.1、2.0 和 3.5 为目标的应用程序,你可以在目标计算机上安装适当的 .NET Framework 版本以在其最佳环境中运行该应用程序。 有关并行执行的详细信息,请参阅并行执行

请参阅