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

时间:2012-09-26 08:42:20

标签: c# windows-8 windows-phone async-ctp portable-class-library

我正在尝试将项目重写为可移植类库。但问题是它使用的是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”的框架版本。

我该如何忍受?

3 个答案:

答案 0 :(得分:5)

当面向.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

答案 1 :(得分:3)

简单回答 - 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。

答案 2 :(得分:1)

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