.NET Framework 的版本兼容性

更新:2010 年 8 月

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

应用程序的版本兼容性

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

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

组件的版本兼容性

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

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

向后兼容性和 .NET Framework 4

.NET Framework 4 与使用 .NET Framework 版本 1.1、2.0、3.0 和 3.5 生成的应用程序向后兼容。 换句话说,使用早期版本的 .NET Framework 生成的应用程序和组件将在 .NET Framework 4 上运行。

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

您应测试您的 .NET Framework 应用程序和组件以确保它们与其他版本的 .NET Framework 兼容。 若要确保应用程序和组件在 .NET Framework 4 上成功运行,请使用 .NET Framework 4 Application Compatibility Walkthrough(.NET Framework 4 应用程序兼容性演练)。

如果应用程序和组件在 .NET Framework 4 上未按预期方式运行,请使用以下检查表。

对于 .NET Framework 2.0、3.0 和 3.5 应用程序:

  • 检查 .NET Framework 4 的迁移问题以了解可能影响应用程序的任何更改并采用描述的解决方法。

  • 如果要将现有源代码重新编译为在 .NET Framework 4 上运行,或者要从现有源代码库开发面向 .NET Framework 4 的新版本的应用程序或组件,请查看 .NET Framework 中的过时功能以了解过时的类型和成员,并采用描述的解决方法。 (以前编译的代码将继续针对已标记为过时的类型和成员运行。)

  • 如果您确定 .NET Framework 4 中的更改损坏了应用程序,请检查运行时设置架构以确定是否能在应用程序配置文件中使用运行时设置以还原早期行为。

  • 如果遇到未记录的问题,请向 Microsoft Connect 提交 Bug,并与 netfxcf@microsoft.com 联系提供 Bug 编号。

对于 .NET Framework 1.1 应用程序:

  • 检查 .NET Framework 4 的迁移问题以了解可能影响应用程序的任何更改并采用描述的解决方法。

  • 查看 Changes in .NET Framework 3.5 SP1(.NET Framework 3.5 SP1 中的更改)和 Changes in .NET Framework 2.0(.NET Framework 2.0 中的更改)以了解已对这些版本进行的任何更改。

  • 如果要将现有源代码重新编译为在 .NET Framework 4 上运行,或者要从现有源代码库开发面向 .NET Framework 4 的新版本的应用程序或组件,请查看 .NET Framework 中的过时功能以了解过时的类型和成员,并采用描述的解决方法。 (以前编译的代码将继续针对已标记为过时的类型和成员运行。)

  • 如果您确定 .NET Framework 4 中的更改损坏了应用程序,请检查运行时设置架构以确定是否能在应用程序配置文件中使用运行时设置以还原早期行为。

  • 如果遇到未记录的问题,请向 Microsoft Connect 提交 Bug,并与 netfxcf@microsoft.com 联系提供 Bug 编号。

兼容性和并行执行

如果找不到解决问题的适当方法,请记住,.NET Framework 4 是与版本 1.1、2.0 和 3.5 并行运行的。 可以在目标计算机上安装适当的 .NET Framework 版本以在应用程序的最佳环境中运行它。 有关并行执行的更多信息,请参见并行执行

请参见

概念

.NET Framework 4 中的新增功能

其他资源

.NET Framework 中的过时功能

Microsoft .NET Framework Support Lifecycle Policy(Microsoft .NET Framework 支持生命周期策略)

.NET Framework 4 的迁移问题

修订记录

日期

修订记录

原因

2010 年 8 月

指明了如果未安装支持的 .NET Framework 版本,则会出现 .NET Framework 初始化错误。

内容 Bug 修复