[英]Method Error 'Cannot await 'System.Threading.Tasks.Task' from await and async properties
[英]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.
解決方案中有四個項目:
Windows可移植類庫(PCL),其中包含一個接口,用於引用BCL提供的“任務”對象。
一個針對OS 7.1的Windows Phone類庫,它實現了上面的接口,並且還使用了BCL中的“任務”。
另一個Windows可移植類庫(PCL),提供應用程序的“核心”功能,包括ViewModel。
試圖引用和使用上述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.