警告 CA2247:TaskCompletionSource コンストラクターの引数は、TaskCreationOptions 値にする必要があります

.NET コード アナライザー ルール CA2247 は、.NET 5 以降では既定で有効になっています。 TaskContinuationOptions 型の引数を渡す TaskCompletionSource<TResult> コンストラクターへの呼び出しに対して、ビルドの警告が生成されます。

変更内容

.NET 5 以降、.NET SDK には .NET ソース コード アナライザーが含まれています。 これらのルールのいくつかは、CA2247 を含め、既定で有効になっています。 このルールに違反し、警告をエラーとして扱うように構成されているコードがプロジェクトに含まれている場合、この変更によってビルドが破損する可能性があります。

ルール CA2247 によって、TaskContinuationOptions 型の引数を渡す TaskCompletionSource<TResult> コンストラクターへの呼び出しが検索されます。 TaskCompletionSource<TResult> 型には、TaskCreationOptions 値を受け入れるコンストラクターと、Object を受け入れる別のコンストラクターがあります。 TaskCreationOptions 値ではなく TaskContinuationOptions 値を誤って渡した場合、Object パラメーターを持つコンストラクターが実行時に呼び出されます。 コードは、コンパイルされ、実行されますが、意図した動作を含みません。

導入されたバージョン

5.0

  • TaskContinuationOptions 引数を、対応する TaskCreationOptions 値に置き換えます。 ほぼ常にコード内のバグが強調表示されるため、この警告を表示しないでください。 詳細については、CA2247 に関する記事を参照してください。

  • コード分析を完全に無効にするには、プロジェクト ファイルで EnableNETAnalyzersfalse に設定します。 詳細については、「EnableNETAnalyzers」を参照してください。

影響を受ける API