CA2007 与 .NET Core 应用程序相关吗?

Tom*_*ght 13 c# asynchronous fxcop .net-core

当我在我的项目上运行 FxCop 时,我收到了大量 ID 为 CA2007 的警告。文档中缺少此 ID (它只是从 CA2006 跳到 CA2100),但我得到的消息是:

不要在不调用 ConfigureAwait 的情况下直接等待任务

我的印象是 .NET Core 没有使用同步上下文,这意味着我不需要使用.ConfigureAwait(bool). 但是,当我尝试使用 Google 搜索它时,我现在只能找到对 ASP.NET Core 的提及(例如这篇博文)。

鉴于我找不到任何权威的东西,我开始怀疑我是否将 ASP.NET Core 更改误认为是更普遍适用于所有 .NET Core 的更改。

谁能给我一个明确的答案?

我是否需要通过我的应用程序并应用大量的ConfigureAwait? 或者我应该在我的 FxCop 规则集中禁用 CA2007?

小智 10

是的,在某些情况下。如果您的代码曾经用作库或有人引入了 SynchronizationContext。参考这篇文章https://devblogs.microsoft.com/dotnet/configureawait-faq/#ive-heard-configureawaitfalse-is-no-longer-necessary-in-net-core-true