.NET 7+ 中的过时 Windows 窗体功能
从 .NET 7 开始,某些 Windows 窗体 API 标记为已过时(否则生成警告),并使用格式为 WFDEVXXX
的自定义诊断 ID。
如果由于使用过时的 API 而遇到生成警告或错误,请遵循参考部分中列出的诊断 ID 所提供的特定指导。 不能使用过时类型或成员的标准诊断 ID (CS0618) 取消有关这些过时类型或成员的警告或错误;请改用自定义 WFDEVXXX
诊断 ID 值。 有关详细信息,请参阅取消警告。
参考
下表提供了 .NET 7+ 中 WFDEVXXX
过时和警告的索引。
诊断 ID | 警告或错误 | 说明 |
---|---|---|
WFDEV001 | 警告 | 强制转换到 IntPtr 或从中强制转换不安全。 请改用 WParamInternal 、LParamInternal 或 ResultInternal 。 |
WFDEV002 | 警告/错误 | System.Windows.Forms.DomainUpDown.DomainUpDownAccessibleObject 不再用于为 DomainUpDown 控件提供可访问支持。 请改用 AccessibleObject。 |
WFDEV003 | 警告 | System.Windows.Forms.DomainUpDown.DomainItemAccessibleObject 不再用于为 DomainUpDown 项提供可访问支持。 请改用 AccessibleObject。 |
禁止显示警告
建议尽可能使用可用的解决方法。 但是,如果无法更改代码,可以通过 #pragma
指令或 <NoWarn>
项目设置来禁止显示警告。 如果必须使用过时 API,并且 WFDEVXXX
诊断没有显示为错误,则可以在代码或项目文件中取消该警告。
若要禁止显示代码中的警告,请执行以下操作:
// Disable the warning.
#pragma warning disable WFDEV001
// Code that uses obsolete API.
//...
// Re-enable the warning.
#pragma warning restore WFDEV001
若要禁止显示项目文件中的警告,请执行以下操作:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net7.0</TargetFramework>
<!-- NoWarn below suppresses WFDEV001 project-wide -->
<NoWarn>$(NoWarn);WFDEV001</NoWarn>
<!-- To suppress multiple warnings, you can use multiple NoWarn elements -->
<NoWarn>$(NoWarn);WFDEV001</NoWarn>
<NoWarn>$(NoWarn);WFDEV003</NoWarn>
<!-- Alternatively, you can suppress multiple warnings by using a semicolon-delimited list -->
<NoWarn>$(NoWarn);WFDEV001;WFDEV003</NoWarn>
</PropertyGroup>
</Project>
注意
以这种方式取消警告只会禁用指定的过时警告。 它不会禁用任何其他警告,包括具有不同诊断 ID 的其他过时警告。