使用动态加载程序集的ComponentResourceManager

本文关键字:ComponentResourceManager 程序集 加载 动态 | 更新日期: 2023-09-27 18:01:45

我创建了一个类来动态管理从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。资源"被正确嵌入或链接到程序集"MyAppName。资源",或者所需的所有附属程序集都是可加载的并且是完全签名的。

你有什么主意吗?

使用动态加载程序集的ComponentResourceManager

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

相关文章:
  • 没有找到相关文章