警告 CA2247:TaskCompletionSource 构造函数的参数应为 TaskCreationOptions 值

从 .NET 5 开始,默认启用 .NET 代码分析器规则 CA2247。 关于对 TaskCompletionSource<TResult> 构造函数的调用(该函数传递类型为 TaskContinuationOptions 的参数),它会生成一个生成警告。

更改说明

从 .NET 5 开始,.NET SDK 包括 .NET 源代码分析器。 其中一些规则会默认启用,包括 CA2247。 如果项目包含违反此规则的代码,并已被配置为将警告视为错误,则此更改可能会中断生成。

规则 CA2247 会查找对 TaskCompletionSource<TResult> 构造函数的调用,这些调用传递类型为 TaskContinuationOptions 的参数。 TaskCompletionSource<TResult> 类型具有一个接受 TaskCreationOptions 值的构造函数和一个接受 Object 的构造函数。 如果意外传递了 TaskContinuationOptions 值(而不是 TaskCreationOptions 值),则在运行时调用带有 Object 参数的构造函数。 代码将编译并运行,但没有预期行为。

引入的版本

5.0

  • TaskContinuationOptions 参数替换为相应的 TaskCreationOptions 值。 请勿禁止显示此警告,因为它几乎总是突出显示代码中的 bug。 有关详细信息,请参阅 CA2247

  • 若要完全禁用代码分析,请在项目文件中将 EnableNETAnalyzers 设置为 false。 有关详细信息,请参阅 EnableNETAnalyzers

受影响的 API