升级到 Roslyn 分析仪 6.0 版后获取 CA2007

Posted

技术标签:

【中文标题】升级到 Roslyn 分析仪 6.0 版后获取 CA2007【英文标题】:Getting CA2007 after upgrading to 6.0 version of the Roslyn Analyzers 【发布时间】:2021-12-22 14:17:47 【问题描述】:

我们有一个 .net core 3.1 项目,我们刚刚将 roslyn 分析器升级到 6.0 版。这样做之后,以下代码行开始获得“CA2007:考虑在等待的任务上调用 ConfigureAwait”。错误:

await using var memoryStream = new MemoryStream(fileByteArray);

如果我们尝试像这样添加 ConfigureAwait 调用:

await using var memoryStream = new MemoryStream(fileByteArray).ConfigureAwait(false);

这会导致 memoryStream 成为 ConfiguredAsyncDisposable 而不是实际的 MemoryStream,这甚至会阻止进一步的代码编译。

我们如何将 ConfigureAwait 添加到我们的 await using 语句中以消除警告,但仍将我们的 memoryStream 保持为实际的 MemoryStream?如果可能,我们宁愿不必压制它。

【问题讨论】:

【参考方案1】:

这可能会有所帮助 https://www.tabsoverspaces.com/233779-using-await-using-iasyncdisposable-with-configureawait

var memoryStream = new MemoryStream(fileByteArray);
await using (memoryStream.ConfigureAwait(false))

   ...

【讨论】:

这与 CA2000 冲突请参阅issueexplorer.com/issue/dotnet/roslyn-analyzers/5712中的讨论

以上是关于升级到 Roslyn 分析仪 6.0 版后获取 CA2007的主要内容,如果未能解决你的问题,请参考以下文章

“升级”到 Office 365 专业增强版后的 RODBC 连接

从 Roslyn 代码分析器调用分析程序集的方法

升级到 Forge 查看器 7.55 版后出现错误

[C#6] 0-概览

需要为 Android 6.0 上的蓝牙低功耗扫描启用位置

sonar-maven-plugin:3.1.1:sonar 升级到 SonarQube 6.0 后分析错误