.NET 7 以降の廃止された Windows フォーム機能

.NET 7 から、一部の Windows フォーム API は、形式 WFDEVXXX のカスタム診断 ID で古いものであるとマークされるようになりました (または、警告が生成されます)。

古い API の使用によってビルドの警告またはエラーが発生した場合は、「リファレンス」セクションに記載されている診断 ID に関する具体的なガイダンスに従ってください。 これらの古い警告またはエラーは、古い型またはメンバーに対して標準診断 ID (CS0618) を使用して非表示にすることは "できません"。代わりに、カスタム WFDEVXXX 診断 ID の値を使用してください。 詳細については、「警告を表示しない」を参照してください。

リファレンス

次の表は、.NET 7 以降の WFDEVXXX の旧型式と警告のインデックスを示しています。

診断 ID 警告またはエラー Description
WFDEV001 警告 IntPtr からのキャストの送受信は安全ではありません。 代わりに、WParamInternalLParamInternal、または 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 の異なる非推奨警告を含め、その他の警告は無効になりません。

こちらもご覧ください