我有兩個資源文件
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包中。完成後法國資源在模擬器中正確使用。我不確定這種方法是否適用於實際設備。