什么是Microsoft.Bcl.Async?

Joh*_*nTG 8 c# asynchronous async-await

什么是Microsoft.Bcl.Async以及它用于什么?

在包页面上看过:

此程序包使Visual Studio 2012项目能够使用新的"async"和"await"关键字.

但是可以看到我的VS2012支持异步等待没有任何额外的包.

那么我应该为我的C#4.5'异步'项目安装包吗?

Ste*_*ary 15

Microsoft.Bcl.Async规定,C#5.0编译器需要使用运行时类型asyncawait.

它为.NET 4.0,Silverlight 4和5,Windows Phone Silverlight 7.1/7.5 以及包含任何这些平台的可移植库提供async/ await支持.它还在Windows Phone Silverlight 8.0平台上提供了一些扩展方法,所以即使WP8可以支持/ 不支持它,它有时也会在那里使用.asyncawait

包括ASP.NET运行时更改必要进行适当async/ await支持,因此,如果您安装到一个ASP.NET 4.0项目,代码将编译,但将无法正常工作.在ASP.NET 上使用async/ 唯一支持的方法await是升级到4.5.


Mic*_*ger 9

这是能够使用包asyncawait在.NET 4.0中的项目.

但请注意.我遇到了这些库无法在.NET 4.5项目中使用的问题.但这是在.NET 4.5的初始发布之前.因此可能会解决此问题.

  • @xxMUROxx据我所知,在4.5中对它们采取NuGet依赖是没有问题的,因为4.5包本质上是空的.但是,如果手动添加对4.0工具的引用,或者在4.0时添加引用,然后将项目更改为4.5而不修复NuGet依赖项,则可能会导致问题.当然,也没有*需要*在4.5中添加这样的依赖,因为它什么都没有增加. (5认同)
  • @JohanTG正确,没有必要在4.5中使用它们.一个典型的用例可能是,例如,一个针对4.0和4.5的NuGet包,4.0 dll使用`Bcl.Async`,而4.5 dll只使用内置类型. (4认同)