2012-01-23 18 views
1

我有兩個資源文件
strings.resx和strings.fr-CA.resx
兩者都嵌入爲英文字符串被正確地裝載在MonoDevelop中MonoTouch的System.Resources.ResourceManager不工作

的資源。當我改變文化時,我得到了資源管理器中拋出的異常。

System.Resources.ResourceManager mgr = new System.Resources.ResourceManager("Mobile.Res.strings",System.Reflection.Assembly.GetAssembly(typeof(RC))); 
var str = mgr.GetString("PROJECTLIST", Thread.CurrentThread.CurrentCulture); 

當應該加載資源時,在以下系統代碼中引發異常。這可以在System.Resources.ResourceManager中找到。

string filename = GetResourceFileName (resourceCulture); 
if (!resourceCulture.Equals (CultureInfo.InvariantCulture)) 
{ 
    /* Try a satellite assembly */ 
    Version sat_version = GetSatelliteContractVersion(MainAssembly); 
    try 
    { 
     Assembly a = MainAssembly.GetSatelliteAssemblyNoThrow(
      resourceCulture, 
      sat_version); 
     if (a != null) 
     { 
      stream = a.GetManifestResourceStream (filename); 
      if (stream == null) 
      { 
       stream = GetManifestResourceStreamNoCase (a, filename); 
      } 
     } 
    } 
    catch (Exception) 
    { 
     // Ignored 
    } 

程序集a對其他文化資源文件始終爲空並引發異常。

我是否缺少項目設置?
這似乎工作,當我在一個正常的.NET解決方案在Visual Studio中這樣做。

當我在一個測試.net窗口環境中創建此文件夾時,我在我的輸出目錄中創建了一個名爲fr-CA的文件夾。

更新:
我已經取得了一些進展。我現在已經使用Windows和桌面項目創建了fr-CA文件夾。然後,我將由Visual Studio創建的文件夾複製到我的.app包中。完成後法國資源在模擬器中正確使用。我不確定這種方法是否適用於實際設備。

回答

1

由於this bug,這不適用於設備。你可以通過這個錯誤來控制自己,以便在問題得到解決時得到通知。

我會盡快修復它,但它需要一段時間才能達到發佈的版本(如果您聯繫支持,您可能會得到修復程序,但一旦它實際上已修復)。

相關問題