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

UWP - How to use Resources.resw in class library

在图书馆

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

        return rl.GetString("Name");
    }

在 "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

图书馆动态引用如何使用资源?

if i add reference this library , it is working well. but i Dynamic reference this library ,it is failure.

你的大部分代码是正确的,你没有提到具体的异常是什么。这是我的演示:

便携式 class 库,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);

立即window中的输出是这样的:

为此,您需要

  1. 构建您的 class 库。

  2. 右击你的class库,选择“在文件资源管理器中打开文件夹”,在文件夹中找到“bin”文件夹=>“调试”,复制ClassLibrary1.dll 像这样进入你的 UWP 项目:

虽然这样做可以解决问题,但个人认为,似乎并不比直接添加这个库的引用更容易。