繁体   English   中英

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

[英]Why can't I use await keyword in my Windows Phone 7.1 MvvmCross project while using the Microsoft.Bcl - cannot await 'System.Threading.Tasks.Task?

在使用Microsoft.Bcl“Microsoft BCL Portability Pack”时,我无法在MvvmCross Windows Phone 7.1项目中使用await关键字。

我已经在GitHub上发布了我在下面描述的示例项目的代码, 并且此行发生了await错误

当我尝试构建包含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),其中包含一个接口,用于引用BCL提供的“任务”对象。

  2. 一个针对OS 7.1的Windows Phone类库,它实现了上面的接口,并且还使用了BCL中的“任务”。

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

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

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

更多细节如果你想要他们:

  • 我尝试了这个App.config“修复”,如“已知的BCL问题”中所述: 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项目属性中定位这些平台:.NET for Windows Store应用程序,.NET 4.5,Silverlight 4+和Windows 7.5+

  • 解决方案中的每个项目也都通过NuGet引用了Microsoft.Bcl“Microsoft BCL Portability Pack”。

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

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

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

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

  • Windows Phone App项目也引用了完整的MvvmCross,并将Windows Phone特定的Mvx文件引入其中。

  • 如上所述, 请参阅GitHub上失败的示例代码

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

这些软件包之前在非Microsoft平台上不可用,但作为Xamarin协作的一部分,Microsoft 重新授权它们可在所有平台下使用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM