如何在.net 4.0中使用asyn / await? AsyncTargetingPack和Microsoft.Bcl.Async之间的区别?

我想在C#4.0中使用async / await,直到知道,我已经使用了异步CTP v3,但似乎这是一个不好的选择,如果我使用VS2012则更多。

在VS2012中,至少有两个选项,Microsoft.CompilerServices.AsyncTargetingPack和Microsoft.Bcl.Async。

第一个,Microsoft.Bcl.Async(Bcl),已经发布晚于AsyncTargetingPack(ATP),但Bcl是beta。

然而,ATP适用于目标是银光5或.NET 4.0的项目,而Bcl似乎可以与银光4,银光5,Windows Phone 7.5和.NET 4.0兼容。

ATP已被弃用? 是兼容还是它们是不同的实现,如果我使用一个,我总是必须使用相同的?

哪个是最好的选择?

AsyncTargetingPack已重命名为Microsoft.Bcl.Async ; 后者仅仅是前者的更新版本,而不是新的单独实现。 在这种情况下,我只是使用最新版本,即使它是预发布版本,以避免在以后必须更新到新的NuGet包名称时出现问题。