У меня проблема с моим проектом. В библиотеке, которую я создал, у меня есть подпапка, которая содержит некоторые 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 () внутри окна