簡體   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