.NET 4.5 中是否需要 Microsoft.Bcl.Async 包?

Do I need Microsoft.Bcl.Async package in .NET 4.5?

我有一个针对 .NET Framework 4.5 的项目 P,它有一个针对 4.0(没有 4.5)的 NuGet 包 A。现在,A 依赖于 Microsoft.Bcl.Async NuGet 包。由于项目 P 的目标是 4.5,因此强制删除对 Microsoft.Bcl.Async 的依赖是否安全?如果移除它确实安全 - 为什么?

你还需要Microsoft.Bcl.Async。包 A 中的程序集将引用 Microsoft.Bcl.Async 包中程序集中的类型和方法。而在 .Net 4.5 上,您有具有 等效功能 的方法,您不会有 完全相同的 方法,因此包 A 不会工作。

例如,如果您在 .Net 上 await 一个 Task,同时使用 Microsoft.Bcl.Async,您的代码将调用 AwaitExtensions 上的扩展方法 public static TaskAwaiter GetAwaiter(this Task task) ] 输入 Microsoft.Threading.Tasks 程序集。

在 .Net 4.5 上该程序集不存在,因此这样的代码将无法运行。