使用 Microsoft.Bcl“Microsoft BCL Portability Pack”时,我无法在 MvvmCross Windows Phone 7.1 项目中使用 wait 关键字。
我已经发布了下面描述的示例项目的代码GitHub 和等待错误发生在这一行 https://github.com/kstreet/PortableMvxAsync/blob/master/PortableMvxAsync.MvxUseThePlugin.Core/ViewModels/FirstViewModel.cs#L50.
当我尝试构建包含 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.
该解决方案中有四个项目:
一个 Windows 可移植类库 (PCL),其中包含一个接口
引用 BCL 提供的“任务”对象。
面向 OS 7.1 的 Windows Phone 类库,实现
上面的接口,还使用 BCL 中的“任务”。
另一个 Windows 可移植类库 (PCL),提供
应用程序的“核心”功能,包括 ViewModel。
Windows Phone 7.1/“7.5”应用程序尝试引用和
使用上面的 DLL。
包含接口和接口实现的前两个项目编译时没有任何错误。但第三个“核心”PCL 无法构建,并出现上述错误。
如果您需要更多详细信息:
我尝试了这个 App.config“修复”,如“已知 BCL 问题”中所述:http://blogs.msdn.com/b/bclteam/p/asynctargetingpackkb.aspx http://blogs.msdn.com/b/bclteam/p/asynctargetingpackkb.aspx但是,当我将 App.config 添加到“Core”项目时,或者当我尝试将相同的 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 Portability Pack”。
所有四个项目都使用 MvvmCross (Mvx)。
此示例中的项目尚未尝试针对与 Xamarin Droid/iOS 堆栈相关的任何内容。它都是 Windows,并且在等待关键字上仍然失败。
带有接口的 PCL 和 Windows Phone 类库都使用 Mvx CrossCore NuGet 包,并设置为作为“Mvx 插件”使用。
“核心”PCL 使用完整的 MvvmCross NuGet 包,并包含发生等待错误的 FirstViewModel。
Windows Phone 应用程序项目也引用了完整的 MvvmCross,其中包含 Windows Phone 特定的 Mvx 文件。
如上所述,请参阅 GitHub 上的失败示例代码 https://github.com/kstreet/PortableMvxAsync/blob/master/PortableMvxAsync.MvxUseThePlugin.Core/ViewModels/FirstViewModel.cs#L50.
您需要添加Microsoft.Bcl.Async
NuGet 包。
这些包以前在非 Microsoft 平台上不可用,但作为 Xamarin 协作 Microsoft 的一部分重新授权他们 http://blogs.msdn.com/b/dotnet/archive/2013/11/13/pcl-and-net-nuget-libraries-are-now-enabled-for-xamarin.aspx可在所有平台下使用。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)