【问题标题】:Using Async CTP with Portable Class Library将 Async CTP 与可移植类库一起使用
【发布时间】:2012-09-26 08:42:19
【问题描述】:

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

我该如何忍受呢?

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      简单的答案 - AsyncCTP 在 Visual Studio 2012 中不起作用,不能在任何项目中使用。对于 .NET 4.0 和 Silverlight 5,您可以从 NuGet 安装 Async Targeting Pack,它以类似的方式工作。
      仅当面向 WinRT、.NET4.5 或 Windows Phone 8 时才支持 Async/await 的可移植类库,即便如此,使用也非常有限。我无法在此详述,因为 Windows Phone 8 SDK 仍处于 NDA 之下。
      对于 WP7.5 和 VS2012,目前无法使用 async/await,但该平台的更新 Async Targeting Pack 应该会在某个时候可用。
      另请注意,AsyncCTP 和 Async Targeting Pack 不能在可移植类库中使用,并且将来不太可能发生变化。结果是在 VS2010 中你不能在 Portable Class Libraries 中使用 async/await。

      【讨论】:

      • 那么,我应该为每个项目保留两个不同的类版本吗?
      • 我一直在 VS2010 中解决这个问题 - 我最终为我的应用程序逻辑创建了一个项目文件夹,其中包含两个 csproj 文件,一个用于 WinRT,第二个用于 WP7.5。然后我在两个项目中引用相同的文件,并且我还使用 #if 等条件构建变量。它工作得很好,但有一些限制。
      • 你也处于保密协议之下,更不用说你可能参与了 wp8sdk - 搏击俱乐部的第一条规则! :)
      【解决方案3】:

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

      【讨论】:

      • 还有其他方法吗?因为我是在windows 7下用vs2010为wp开发的。
      • 你可以尝试在VS2012中编译需要异步支持的项目,然后在你的VS210项目中引用那些dll
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-08-19
      相关资源
      最近更新 更多