【问题标题】:Xamarin looking for resources at the wrong placeXamarin 在错误的地方寻找资源
【发布时间】:2017-10-04 17:29:43
【问题描述】:

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

我的开发环境直到昨天都可以正常工作,现在我无法正确调试。在加载字符串资源时,AppResources.designer.cs 中的以下代码会引发“file-not-found”异常:

 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 文件吗?问候。

【问题讨论】:

    标签: xamarin xamarin.android


    【解决方案1】:

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

    resources.arsc 适用于 Android 本机本地化。但是您目前正在开发 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 文件中的字符串。

    【讨论】:

    • 感谢您的帮助。在 VS2015 上运行修复后,问题似乎消失了。但是,尽管我们的应用程序是 Xamarin Forms 应用程序,但我们没有任何 en-US/Myproject.resources.dll 并且一切正常。让我觉得正在使用 resources.arsc。问候。
    猜你喜欢
    • 2020-02-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-25
    • 2020-02-01
    • 1970-01-01
    相关资源
    最近更新 更多