2016-09-19 12 views
0

в библиотекеUWP - Как использовать Resources.resw в библиотеке классов

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

     return rl.GetString("Name"); 
    } 

в "ResourceLoader гх = ResourceLoader.GetForCurrentView (" ClassLibrary1/ресурсы ");"

Исключение типа '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 

как использовать ресурсы для динамической ссылки в библиотеке?

ответ

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. щелкните правой кнопкой класса LIB, выберите «Открыть папку в File Explorer», в папке найти «БИН» папку => «Отладка», скопируйте ClassLibrary1.dll в свой UWP проект, как это:

enter image description here

Хотя это может решить проблему, но, по моему личному мнению, это не так просто, как прямое добавление ссылки этой библиотеки.

+0

Благодарим вас за ответ – wangji

+0

@wangji, это приемлемый ответ? Если да, не могли бы вы отметить этот ответ? –

+0

Благодарим вас за ответ. Я хочу использовать динамический ссылочный тип для загрузки «.dll» и использовать «.dll ", потому что приложение добавит" .dll "Динамический, когда мне нужно – wangji