2012-01-23 5 views
1

私は2つのリソースファイルの両方が英語の文字列が正しくロードされているMonoDevelopのMonoTouchでSystem.Resources.ResourceManagerが動作しない

にリソースとして埋め込まれて
strings.resxとstrings.fr-CA.resx
を持っています。文化を変更すると、Resource Managerに例外がスローされます。

リソースがロードされるはずの場合、次のシステムコードで例外がスローされます。これは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は、他のカルチャリソースファイルでは常にnullであり、例外がスローされます。

プロジェクト設定がありません。
これは、通常の.netソリューションでVisual Studioでこれを行うと機能しているようです。

これをテスト.net Windows環境で作成すると、出力ディレクトリにfr-CAというフォルダが作成されます。

更新日:
私はこれを少し進歩させました。 Windowsとデスクトッププロジェクトを使用してfr-CAフォルダを作成しました。その後、Visual Studioで作成したフォルダを.appバンドルにコピーしました。この後、frenchリソースはシミュレータで正しく使用されます。このアプローチが実際のデバイスでうまくいくかどうかはわかりません。

答えて

1

これは現在this bugのためにデバイスでは動作しません。そのバグに自分自身を参照して、修正されたときに通知を受けることができます。

私はできるだけ早くそれを修正しようとするでしょうが、それはリリースされたバージョンに到達するまで(あなたはそれが実際に固定しています一度あなたがそうなのに修正プログラムを入手することができますサポートに連絡している場合)には、しばらく時間がかかります。