默认情况下,从 .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 值。 不要忽略此警告,因为它通常表明代码中的错误。 有关详细信息,请参阅 CA2247。
若要完全禁用代码分析,请在项目文件中设置为
EnableNETAnalyzers
false
。 有关详细信息,请参阅 EnableNETAnalyzers。