Не удается найти ресурсы, идентифицируемые URI '/mydll;component/subfolder/mainwindow.xaml' при динамической загрузке dll - PullRequest
0 голосов
/ 07 января 2019

У меня проблема с моим проектом. В библиотеке, которую я создал, у меня есть подпапка, которая содержит некоторые view и viewmodels, но, поскольку они находятся в библиотеке классов, у меня нет app.xaml. Это всегда работало без проблем.

Недавно мне было поручено зашифровать эту dll с помощью инструмента, купленного моей компанией. Этот инструмент, в основном, дешифрует и динамически загружает сборку. Теперь моя проблема в том, что когда я динамически загружаю библиотеку классов, о которой я упоминал ранее, когда нужно запустить окно, я получаю следующее исключение

Не удается найти ресурсы, идентифицированные по URI '/mydll;component/subfolder/mainwindow.xaml'

Я читал, что при загрузке сборок таким способом WPF сталкивается с некоторой проблемой, и обходной путь заключается в добавлении в App.xaml фиктивных глобальных ресурсов, таких как:

<Application x:Class="TestWpfApp.App" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    StartupUri="MainWindow.xaml"> 
    <Application.Resources> 
        <SolidColorBrush x:Key="Dummy" Color="Yellow"></SolidColorBrush> 
    </Application.Resources> 
</Application>

Но у меня нет App.xaml. Есть ли способ, как я могу решить это?

В настоящее время мои настройки следующие:

У меня есть проект, у которого есть класс AssemblyLoader. Этот класс обрабатывает следующее событие:

AppDomain currentDomain = AppDomain.CurrentDomain;
currentDomain.AssemblyResolve += new ResolveEventHandler(currentDomain_AssemblyResolve);

Таким образом, каждый раз, когда фреймворку нужно что-то из dll, на которое ссылается, вызывается currentDomain_AssemblyResolve. Если необходимая сборка зашифрована, я использую DLL, чтобы расшифровать ее и вернуть сборки. Я уверен, что сборка загружена, потому что я могу попасть в «бизнес». Это вызывает исключение, когда он вызывает InitializeComponent () внутри окна

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...