从访问字符串资源DLL中嵌入的.resx?(Access strings resources fro

2019-10-28 23:26发布

我完全新的资源文件,但有必要对我来说,我的部署应用程序一次点击,这似乎忽略了我所有的外部文件(图片,.ini文件等) - 而不是花时间试图弄明白,我想我会学习如何使用资源文件正确。

通过SO搜索后,我发现很多代码,我已经建立了我的资源文件。 到目前为止,它仅包含字符串,我本以为这是简单的!? 唉...

所以,我有我的DLL(ValhallaLib.dll)和与资源处理(这些功能都举行了静态辅助类,在我的所有随机的,但有用的功能,生活中)这两个函数:

    public static Bitmap getImageByName(string imgName)
    {
        System.Reflection.Assembly asm = System.Reflection.Assembly.GetExecutingAssembly();
        string resName = asm.GetName().Name + ".Properties.Resources";
        var rm = new System.Resources.ResourceManager(resName, asm);

        return (Bitmap)rm.GetObject(imgName);
    }


    public static string getStringByName(string var)
    {
        System.Reflection.Assembly asm = System.Reflection.Assembly.GetExecutingAssembly();
        string resName = asm.GetName().Name + ".Properties.Resources";
        var rm = new ResourceManager(resName, asm);

        return rm.GetString(var);
    }  

而我试图打电话给他们一个简单的:

CHelpers.getStringByName("db_host_address");

现在,比得到一个MissingManifestException其他...我的问题是,我不知道(和似乎无法找到一个直接的答案!)的什么resName应该的。 我的资源文件名为: StringResource.resx -然而,它不是说Assembly.ValhallaLib.StringResource的情况。

任何人都可以提供一些指导吗?

更新我已经试过global::ValhallaLib.StringResource -但是这算不上什么,我之后。

更新2解决它。 我设法得到它一起工作:

    public static string getStringByName(string var)
    {
        System.Reflection.Assembly asm = System.Reflection.Assembly.GetExecutingAssembly();
        string resName = asm.GetName().Name + ".Properties.Resources";
        var rm = new ResourceManager("ValhallaLib.StringResource", asm);

        return rm.GetString(var);
    }

我不知道为什么,我发现,这样过于复杂。 可能是因为我已经有大约2小时睡觉。

干杯那些谁尝试过,虽然:)

Answer 1:

捂脸我已经想通了。 我可以使用访问的资源文件

    public static string getStringByName(string var)
    {
        System.Reflection.Assembly asm = System.Reflection.Assembly.GetExecutingAssembly();
        string resName = asm.GetName().Name + ".Properties.Resources";
        var rm = new ResourceManager("ValhallaLib.StringResource", asm);

        return rm.GetString(var);
    }

不理我 :)



Answer 2:

resName是对资源的基本名称。 资源类的在你的情况,你可以简单的用全类型名称。

var resName = typeof(StringResource).FullName;


文章来源: Access strings resources from embedded .resx in dll?