c# - 为什么在使用 Microsoft.Bcl 时不能在我的 Windows Phone 7.1 MvvmCross 项目中使用 await 关键字 - 不能等待 'System.Threading.Tasks.Task?

标签 c# windows-phone mvvmcross portable-class-library base-class-library

在使用 Microsoft.Bcl“Microsoft BCL 可移植包”时,我无法在我的 MvvmCross Windows Phone 7.1 项目中使用 await 关键字。

我已经在 GitHub and the await error occurs on this line 上发布了下面描述的示例项目的代码.

当我尝试构建包含 FirstViewModel 的第三个“核心”Windows 可移植类库 (PCL) 时,出现以下错误:

Type System.Threading.Tasks.Task<string> not awaitable under VS red squiggles, and
Cannot await 'System.Threading.Tasks.Task<string>' when building.

解决方案中有四个项目:

  1. 一个 Windows 可移植类库 (PCL),其中包含一个接口(interface) 引用 BCL 提供的“任务”对象。

  2. 针对 OS 7.1 的 Windows Phone 类库实现了 上面的接口(interface),还使用 ​​BCL 中的“任务”。

  3. 另一个 Windows 可移植类库 (PCL),它提供了 应用的“核心”功能,包括 ViewModel。

  4. Windows Phone 7.1/“7.5”应用程序尝试引用和 使用上面的 DLL。

包含接口(interface)和接口(interface)实现的前两个项目编译没有任何错误。但是第三个“核心”PCL 无法构建,并出现上面显示的错误。

如果您需要更多详细信息:

  • 我按照“已知 BCL 问题”中的说明尝试了此 App.config“修复”: http://blogs.msdn.com/b/bclteam/p/asynctargetingpackkb.aspx .但是当我将 App.config 添加到“核心”项目时,或者当我尝试将相同的 App.config 添加到每个项目时,这并没有解决错误。可能是我没有在元素中使用正确的版本,或者我只是错误地执行了 App.config。

  • 解决方案中设置为以 PCL 为目标的每个项目在 Visual Studio 中都设置为“Profile104”。

这些 DLL 位于:

C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETPortable\v4.0\Profile\Profile104\
  • 此 PCL 配置文件在 Visual Studio 项目属性中显示为针对这些平台: 适用于 Windows 应用商店应用、.NET 4.5、Silverlight 4+ 和 Windows 7.5+ 的 .NET

  • 解决方案中的每个项目还通过 NuGet 引用 Microsoft.Bcl“Microsoft BCL 可移植性包”。

  • 所有四个项目都使用 MvvmCross (Mvx)。

  • 此示例中的所有项目均未尝试针对与 Xamarin Droid/iOS 堆栈相关的任何内容。它是所有 Windows 并且仍然在 await 关键字上失败。

  • 带有接口(interface)的 PCL 和 Windows Phone 类库都使用 Mvx CrossCore NuGet 包,并设置为作为“Mvx 插件”使用。

  • “核心”PCL 使用完整的 MvvmCross NuGet 包并包含发生等待错误的 FirstViewModel。

  • Windows Phone 应用程序项目也引用了完整的 MvvmCross,其中包含特定于 Windows Phone 的 Mvx 文件。

  • 如前所述,see the failing sample code on GitHub .

最佳答案

您需要添加 Microsoft.Bcl.Async NuGet 包。

这些包以前在非 Microsoft 平台上不可用,但作为 Xamarin 协作的一部分 Microsoft relicensed them可在所有平台下使用。

关于c# - 为什么在使用 Microsoft.Bcl 时不能在我的 Windows Phone 7.1 MvvmCross 项目中使用 await 关键字 - 不能等待 'System.Threading.Tasks.Task?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18370330/

相关文章:

c# - HttpRequestException 在 Windows Phone 中的激活事件中使用 HttpClient

android - 从手机打开此处 map 网址

android - MVVM交叉 : How to bind ImageView to local Image (saved in SD Card)

c# - 如何使用 SQLiteAsyncConnection.QueryAsync() 使用原始查询来删除 MVVM cross 中的一行?

c# - 阅读 msix 包 appxmanifest 版本

c# - 多次使用 C# 比较 2 个巨大的列表(有一个转折点)

windows-phone-8 - 需要在 wp8 应用程序中添加崩溃报告功能

button - Xamarin.Forms 按钮在触摸后将被禁用

c# - 服务器无法识别 HTTP header SOAPAction 的值

c# - 将对象名称添加到其序列化字符串中