将Async CTP与可移植类库一起使用

我正在尝试将项目重写为可移植类库。 但问题是它使用的是Async CTP,我无法将其编译为WP和Windows Store App的库。 如果我不包含引用AsyncCtpLibrary.dll,编译器会说

名称空间’System.Threading’中不存在类型或命名空间名称’Tasks’(您是否缺少程序集引用?)

如果我包含它,编译器仍会说相同的错误并添加警告:

无法解析主要引用“AsyncCtpLibrary”,因为它对框架程序集“mscorlib,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089”具有间接依赖性,这在当前目标框架中无法解析。 ” .NETPortable,版本= V4.0,外形= Profile104″ 。 要解决此问题,请删除引用“AsyncCtpLibrary”或将应用程序重新定位到包含“mscorlib,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089”的框架版本。

我该怎么忍受?

简单回答 – AsyncCTP在Visual Studio 2012中不起作用,不能在任何项目中使用。 对于.NET 4.0和Silverlight 5,您可以从NuGet安装以类似方式工作的Async Targeting Pack。
只有在针对WinRT,.NET4.5或Windows Phone 8时才支持异步/等待在可移植类库中,即使这样,使用也非常有限。 我不能在这里详细介绍,因为Windows Phone 8 SDK仍然在NDA下。
对于WP7.5和VS2012,目前无法使用async / await,但此平台的更新Async Targeting Pack应该可以使用。
另请注意,AsyncCTP和Async Targeting Pack不能在便携式类库中使用,并且它不太可能在将来发生变化。 结果是在VS2010中,您不能在可移植类库中使用async / await。

在针对.NET 4.5和Window Store应用程序时,您当前只能在便携式中使用async / await。 在便携式之外,您可以使用Async Targeting Pack for .NET 4.0和Silverlight 5。

尽管如此,我们正在开发一个更新的异步定位包,在针对Phone 7.5,Silverlight 5和.NET 4.0时,可在便携式中添加对async / await的支持,请参阅: http : //visualstudio.uservoice.com/forums/121579 -visual-studio / suggestions / 2691068-support-async-in-portable-class-libraries 。 你将在10月初看到这一点。

更新 :我们刚刚发布了这个测试版: http : //blogs.msdn.com/b/bclteam/archive/2012/10/22/using-async-await-without-net-framework-4-5.aspx 。

您可以尝试使用AsyncBridge项目而不是AsyncCTP。 我不知道它是否会有所帮助。 您必须在VS2012中编译才能使其工作(您仍然可以使用.NET4.0):