版本兼容性

向后兼容性意味着为平台的特定版本开发的应用将在该平台的更高版本上运行。 .NET Framework 尝试最大程度地实现向后兼容性:为一个版本的 .NET Framework 编写的源代码应在更高版本的 .NET Framework 上编译,在 .NET Framework 的一个版本上运行的二进制文件在更高版本的 .NET Framework 上的行为应相同。

应用的版本兼容性

默认情况下,应用在为其生成的 .NET Framework 版本上运行。 如果该版本不存在,并且应用配置文件未定义受支持的版本,则可能会发生 .NET Framework 初始化错误。 在这种情况下,尝试运行应用将失败。

若要定义应用运行的特定版本,请将一个或多个 <受支持的Runtime> 元素添加到应用的配置文件。 每个 <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 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 版本,以在其最佳环境中运行应用。 有关并行执行的详细信息,请参阅 并行执行

另请参阅