2016-05-16 46 views
5

我的Visual Studio 2015年解決方案具有以下項目:MissingManifestResourceException從PCL彙編代碼調用從UWP

  • .NET程序集
  • UWP裝配
  • PCL裝配
  • .NET單元測試庫
  • UWP單元測試應用程序

PCL as sembly包含嵌入的字符串資源表(通過項目中的RESX文件)和一個允許調用者從字符串資源表中獲取字符串的簡單類。 PCL旨在允許在.NET和UWP程序集之間共享字符串。

運行.NET單元測試庫時,單元測試會調用.NET程序集,該程序會從PCL程序集中獲取字符串。這按預期工作。

當運行UWP單元測試應用程序時,單元測試會調用UWP程序集,該程序會從PCL程序集中獲取字符串。這會失敗並出現以下異常消息:

System.Resources.MissingManifestResourceException:無法爲包[guid]中的資源文件[blah]加載資源。

我試過this solution,但調用GetForViewIndependentUse()COMException失敗指出「ResourceMap未找到」。

發生了什麼事?這個調用鏈適用於.NET單元測試堆棧。我已經檢查確保所有程序集的中性語言都設置爲「英語」。在.NET程序集和UWP程序集之間共享字符串表的最佳方式是什麼?

+0

「in package」告訴你出了什麼問題,資源被嵌入到程序集中,而不是程序包中。資源在UWP中完全不同,它們被編譯成PRI blob並嵌入到包中。由於衛星組件無法在UWP中工作,因此令人信服的ResourceManager從組件中讀取可能會非常棘手,因爲沒有真正的想法。 –

回答

5

我在過去幾天處理的是同樣的「MissingManifestResourceException」。我也檢查了關於Xamarin的Microsoft Blog PostMVP Post。在應用建議的解決方案後,我得到了與「ResourceMap Not Found」相同的錯誤。

最後,我決定回去的主要問題,我仔細檢查了MSDN中的錯誤「MissingManifestResourceException」的描述,和它說:

時引發的異常,如果主要部件不包含中立文化的資源,並且缺少適當的附屬程序集。

來源:https://msdn.microsoft.com/en-us/library/system.resources.missingmanifestresourceexception(v=vs.110).aspx

所以,我只是去PCL和設置中性文化(語言)

  1. 在解決方案資源管理器中,右鍵單擊您的項目,然後點擊 屬性。
  2. 從左側導航欄選擇應用程序,然後單擊組裝信息。
  3. 在裝配信息對話框 中,從中性語言下拉列表中選擇語言。
  4. 單擊確定。

來源:https://msdn.microsoft.com/en-us/library/bb385967.aspx

問題解決了!