2012-01-23 1 views
1

나는 두 리소스 파일을 모두 영어 문자열이 제대로로드 MonodevelopMonotouch System.Resources.ResourceManager가 작동하지

에 리소스로 포함되어
strings.resx 및 strings.fr - CA.resx
있습니다. 문화권을 변경할 때 Resource Manager에서 예외가 발생합니다.

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); 

리소스가로드 될 때 다음 시스템 코드에서 예외가 throw됩니다. 이는 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 
    } 

어셈블리는 다른 culture 리소스 파일에 대해서는 항상 null이며 예외를 throw합니다.

프로젝트 설정이 누락 되었습니까?
이 Visual Studio에서 일반 .net 솔루션에서 이렇게 할 때 작동하는 것 같습니다.

테스트 .net Windows 환경에서이 파일을 만들면 fr-CA라는 출력 디렉토리에 폴더가 생성됩니다.

업데이트 :
나는 이것으로 약간의 진전을 이루었습니다. Windows 및 데스크톱 프로젝트를 사용하여 fr-CA 폴더를 만들었습니다. 그런 다음 Visual Studio에서 만든 폴더를 .app 번들로 복사했습니다. 이렇게 한 후 시뮬레이터에서 french 리소스가 올바르게 사용되었습니다. 이 방법이 실제 장치에서 작동하는지 확신 할 수 없습니다.

답변

1

이 기기는 현재 this bug으로 인해 작동하지 않습니다. 그 버그에 대해 스스로 고쳐서 고칠 때 통보받을 수 있습니다.

가능한 빨리 수정하려고 시도하지만 출시 버전에 도달 할 때까지 약간의 시간이 걸릴 수 있습니다 (지원 담당자에게 문의하면 실제로 수정 된 후에도 핫픽스를 얻을 수 있습니다).