【问题标题】:Use ComponentResourceManager with an assembly dynamically loaded将 ComponentResourceManager 与动态加载的程序集一起使用
【发布时间】:2013-03-01 07:55:00
【问题描述】:

我创建了一个类来管理从ComponentResourceManager动态派生的资源:

public class MyResourceManager : ComponentResourceManager
{
    public MyResourceManager(Type _t, Langue _lang) : base(_t)
    {
        if (_lang == Langue.French)
        {
            MainAssembly = Assembly.LoadFile("c:/myCustomFolder/french.dll");
        }
        else
        {
            MainAssembly = Assembly.LoadFile("c:/myCustomFolder/english.dll");
        }
    }
}

当我尝试将资源应用到我的控件时,会引发异常

public static void UpdateLanguage(Control c, Langue _lang)
{
    MyResourceManager language = new MyResourceManager(c.GetType(), _lang);
    language.ApplyResources(c, c.Name);
}

引发异常:(调用 ApplyResources 时)

未处理的类型异常 'System.Resources.MissingManifestResourceException' 发生在 mscorlib.dll

附加信息:找不到任何适合指定文化或中立文化的资源。确保“MyAppName.MyFormName.resources”在编译时被正确嵌入或链接到程序集“MyAppName.resources”中,或者所有需要的附属程序集都是可加载的并且是完全签名的。

你有什么想法吗?

【问题讨论】:

    标签: c#


    【解决方案1】:

    最常见的原因是您在创建资源文件后更改了命名空间名称,或者资源文件的构建操作未设置为嵌入式资源。

    【讨论】:

    • DLL 是由项目本身生成的(在 app 文件夹中的文化文件夹“fr”和“en”中),因此命名空间是正确的。我只想重命名它们并将它们放在另一个文件夹中并能够动态加载它们。
    猜你喜欢
    • 1970-01-01
    • 2016-05-15
    • 1970-01-01
    • 2019-12-13
    • 1970-01-01
    • 2013-01-05
    • 2016-10-24
    • 1970-01-01
    相关资源
    最近更新 更多