Xamarin在错误的地方寻找资源

时间:2017-10-04 17:29:43

标签: xamarin xamarin.android

环境:Visual Studio 2015,Xamarin 4.7.9.45,Xamarin Android 7.4.5.1

我的开发环境过去一直工作到昨天,现在我无法正常调试。在加载字符串资源时,AppResources.designer.cs中的以下代码会引发"文件未找到"例外:

 public static string Button_Username {
   get {
      return ResourceManager.GetString("Button_Username", resourceCulture);
   }
 }

资源文化是" en-US。"确实定义了字符串资源Button_Username。否则,上面的代码行甚至不会出现在自动生成的AppResources.designer.cs文件中。

在调试器中检查异常时,Xamarin似乎正在尝试加载以下文件:

/storage/emulated/0/Android/data/myapp.mycomp.com/
    files/.__override__/en-US/MyProject.resources.dll

我们为许多其他语言生成MyProject.resources.dll但不是en-US,因为它是默认语言。为什么Xamarin试图加载这个DLL?不应该查看resources.arsc文件吗?问候。

1 个答案:

答案 0 :(得分:1)

  

我们为许多其他语言生成MyProject.resources.dll但不是en-US,因为它是默认语言。为什么Xamarin试图加载这个DLL?不应该查看resources.arsc文件?

resources.arsc适用于Android Native本地化。但您目前正在开发Xamarin.Forms应用程序并使用其本地化,相关的.resw文件将被合并到MyProject.resources.dll,并且您的项目将en-US设置为默认文化。

如果您已创建AppResources.en-US.resw文件,则当前文化为en-US。您的应用会尝试查找此文件,该文件包含在.../en-US/MyProject.resources.dll

如果您未创建AppResources.en-US.resw,您的应用会搜索AppResources.resw文件中的字符串。