代码之家  ›  专栏  ›  技术社区  ›  Unbreakable

访问resx文件时出现MissingManifestResourceException

  •  0
  • Unbreakable  · 技术社区  · 7 年前

    我要走了 MissingManifestResourceException

    我有一个代码片段工作正常,我有另一个不工作。我不知道这是怎么回事。

    static void Main(string[] args)
    {
        //Keep an Eye on the first parameter I have passed, it has ".Lang" in it 
        var rm = new ResourceManager("ConsoleApp1.App_GlobalResources.Lang", Assembly.GetExecutingAssembly());
        var ci = Thread.CurrentThread.CurrentCulture;
        var a = rm.GetString("Name", ci);
        Console.WriteLine("Hello World!");
    }
    

    非工作代码段:

    static void Main(string[] args)
    {
        // Keep an eye on first parameter no ".Lang" here.
        var rm = new ResourceManager("ConsoleApp1.App_GlobalResources", Assembly.GetExecutingAssembly());
        var ci = Thread.CurrentThread.CurrentCulture;
        var a = rm.GetString("Name", ci);
        Console.WriteLine("Hello World!");
    }
    

    我的解决方案结构:

    enter image description here

    财产朗恩-美国文件(工作正常):

    enter image description here

    enter image description here

    问题1: 为什么会这样朗恩-US不生成任何.CS文件,即使这样也可以

    问题2:

    SO LINK

    图1:

    enter image description here

    enter image description here

    1 回复  |  直到 5 年前
        1
  •  2
  •   Orel Eraki    7 年前

    你的工作示例如下。

    1. GetString(Key,Culture)-尝试查找正确的区域性,如果找不到,那么它将回退到无区域性文件。e、 g:为了“恩我们”,它会努力找到 Lang.en-US.resx 将默认为 Lang.resx

    您的非工作示例不起作用,因为您没有为它指定虚拟文件前缀,而是文件夹路径。

    解决方案: 一种理想的情况是,使用您的程序处理以下多语言文件。

    • 语言.resx:不存在的区域性文件的默认值
    • 朗恩-美国resx:美国文化
    • Lang.he.resx语言:he文化

    代码:

    var rm = new ResourceManager("ConsoleApp1.App_GlobalResources.Lang", Assembly.GetExecutingAssembly());
    
    推荐文章