6

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

我该如何忍受呢?

4

3 回答 3

5

当面向 .NET 4.5 和 Window Store 应用程序时,您目前只能在便携式设备中使用 async/await。除了便携式之外,您还可以使用适用于 .NET 4.0 和 Silverlight 5 的 Async Targeting Pack。

尽管如此,我们正在开发一个更新的异步定位包,当定位到 Phone 7.5、Silverlight 5 和 .NET 4.0 时,它增加了对便携式异步/等待的支持,请参阅: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

于 2012-09-26T14:43:49.783 回答
3

简单的答案 - AsyncCTP 在 Visual Studio 2012 中不起作用,不能在任何项目中使用。对于 .NET 4.0 和 Silverlight 5,您可以从 NuGet 安装以类似方式工作的 Async Targeting Pack。
Async/await 在可移植类库中仅在面向 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。

于 2012-09-26T11:23:05.540 回答
1

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

于 2012-09-26T08:45:50.240 回答