UWP - 如何在类库中使用Resources.resw

时间:2016-09-19 05:23:03

标签: c# resources uwp dynamic-library

库中的

        public string GetName()
    {
        ResourceLoader rl = ResourceLoader.GetForCurrentView("ClassLibrary1/Resources");

        return rl.GetString("Name");
    }

at" ResourceLoader rl = ResourceLoader.GetForCurrentView(" ClassLibrary1 / Resources");"

类型' System.Runtime.InteropServices.COMException'的例外情况发生在ClassLibrary1.dll中但未在用户代码中处理

WinRT信息:未找到ResourceMap。

其他信息:未找到ResourceMap。

未找到ResourceMap。

如果存在此异常的处理程序,则可以安全地继续该程序。

如果我添加引用此库,它运行良好。 但我动态参考这个库,它是失败的。

        Assembly assembly = Assembly.Load(new AssemblyName("ClassLibrary1"));
        if (assembly == null)
        {
            return;
        }
        Type type = assembly.GetType("ClassLibrary1.Class1");
        ICore core = Activator.CreateInstance(type) as ICore;
        textBlock1.Text = core.GetName();

        //ClassLibrary1.Class1 c1 = new ClassLibrary1.Class1();
        //textBlock1.Text = c1.GetName(); //it is working well

如何在库中使用资源进行动态参考?

1 个答案:

答案 0 :(得分:0)

  

如果我添加引用此库,它运行良好。但我动态引用这个库,它是失败的。

你的大部分代码都是正确的,你没有提到究竟是什么例外。这是我的演示:

便携式类库,class1:

public class Class1
{
    public Class1()
    {
        Debug.WriteLine("ClassLib Loaded!");
    }

    public void Output()
    {
        Debug.WriteLine("ClassLib method!");
    }
}

在UWP应用中:

Assembly assembly = Assembly.Load(new AssemblyName("ClassLibrary1"));
if (assembly == null)
{
    return;
}
Type type = assembly.GetType("ClassLibrary1.Class1");
object obj = Activator.CreateInstance(type);
var method = type.GetMethod("Output");
method.Invoke(obj, null);

即时窗口中的输出如下:

enter image description here

为此,您需要

  1. 构建您的类库。

  2. 右键单击您的类库,选择“在文件资源管理器中打开文件夹”,在文件夹中找到“bin”文件夹=> “调试”,将ClassLibrary1.dll复制到您的UWP项目中,如下所示:

  3. enter image description here

    尽管这样做可以解决问题,但在我个人看来,似乎并不比直接添加此库的参考更容易。