.NET Framework 中的过时功能
.NET Framework 随着时间的变化而变化。 每个新版本都会添加可提供新功能的新的类型和类型成员。 现有的类型及其成员也会随着时间变化而改变。 例如,某些类型因其所支持的技术被新技术所替换而变得不那么重要;某些方法由更为方便或功能更齐全的更新的方法所取代。
.NET Framework 和公共语言运行时尽可能地支持向后兼容性,即允许使用 .NET Framework 的一个版本开发的应用程序在 .NET Framework 的下一个版本上运行。 这使得简单移除类型或类型成员变得相当困难。 .NET Framework 而是通过将某个类型或类型成员标记为已过时或已弃用,指示不应再使用该类型或类型成员。 弃用某个类型或成员时应对其进行标记,以便开发人员知道该类型或成员将不再使用,从而有时间对移除它做出响应。 但使用该类型或成员的现有代码可以继续在 .NET Framework 的新版本上运行。
![]() |
---|
术语“过时”和“弃用”在应用于 .NET Framework 的类型和成员时意义相同。 |
ObsoleteAttribute 特性
.NET Framework 通过使用 ObsoleteAttribute 特性标记某个类型或类型成员来指示其已过时。 如果将此特性应用于某个类型或成员,则指示该类型或成员将从 .NET Framework 的某一将来版本中移除,但不会损坏使用该成员的已编译代码。
除了指示某个类型或类型成员已过时以外,ObsoleteAttribute 还定义编译器如何处理包含该类型或成员的源代码。 编译器可以编译代码但发出警告信息,也可以将对该类型或成员的使用视为错误。 在第一种情况下,代码可以成功编译,但会出现一条警告消息来指示该类型或成员已过时。 在第二种情况下,编译过程将失败。
即使编译过程产生的是错误而非警告消息,ObsoleteAttribute 也不会影响运行时行为。 也就是说,使用该类型或成员并且已成功编译的应用程序将始终成功运行。 只有在尝试重新编译使用该类型或成员的应用程序时才会失败。
如何处理过时类型和成员
当升级和重新编译现有代码时,在应用程序中使用会产生编译器警告的过时类型或成员是完全可以接受的。 但是,您应查看编译器警告消息以确定是否应更改您的应用程序代码。 如果该消息未指向合适的替代项,您应执行下列任一操作:
如果可能,删除对相应类型或成员的使用来更改代码。
- 或 -
查看有关此技术领域的文档以确定如何响应弃用情况。
可以选择不针对 .NET Framework 的更高版本重新编译现有的代码。 而是可以指定现有的已编译代码针对其运行的 .NET Framework 版本。 例如,假定您拥有一个已针对 .NET Framework 3.5 进行编译的名为 app1.exe 的应用程序,但您希望针对 .NET Framework 4 运行该应用程序。 这需要以下步骤:
为主可执行程序创建一个配置文件并将其命名为 appName.exe.config,其中 appName 是应用程序可执行文件的名称。 对于此示例中名为 app1.exe 的应用程序,您将创建一个名为 app1.exe.config 的配置文件。
向该配置文件中添加以下内容。
<configuration> <startup> <supportedRuntime version="v4.0" /> </startup> </configuration>
下表列出了可以分配给 version 特性从而以 .NET Framework 的特定版本为目标的字符串值。
.NET Framework 版本 |
version 字符串 |
4 |
v4.0 |
3.5 |
v2.0.50727 |
2.0 |
v2.0.50727 |
1.1 |
v1.1.4322 |
1.0 |
v1.0.3705 |
.NET Framework 4 的过时列表
早期版本的过时列表
.NET Framework 3.5 Obsolete List(.NET Framework 3.5 过时列表)
.NET Framework 2.0 Obsolete List(.NET Framework 2.0 过时列表)