我有两个资源文件
strings.resx和strings.fr-CA.resx
两者都作为资源嵌入Monodevelop
正确加载英文字符串。当我改变文化时,我在资源管理器中抛出异常。
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始终为null并引发异常。
我是否缺少项目设置?
当我在Visual Studio上使用普通的.net解决方案执行此操作时,这似乎有效。
当我在测试.net windows环境中创建它时,我会在输出目录中创建名为fr-CA的文件夹。
更新:
我在这方面取得了一些进展。我现在使用Windows和桌面项目创建了fr-CA文件夹。然后我将Visual Studio创建的文件夹复制到我的.app包中。执行此操作后,法语资源在模拟器中正确使用。我不确定这种方法是否适用于实际设备。
答案 0 :(得分:1)
由于this bug,现在无法在设备上运行。你可以自己控制该bug,以便在修复后得到通知。
我会尽快修复它,但它需要一段时间才能达到发布版本(如果你联系支持,你可能会得到修补程序,虽然它实际上已经修复)。