Как я могу динамически загрузить WPF User Control Library из консольного приложения?
Описание проблемы:
У меня есть сборка, скомпилирован как WPF User Control Library и вы хотите загрузить его из консольного приложения с помощью отражения. К сожалению, я получаю System.Reflection.ReflectionTypeLoadException
с этим сообщением:
Невозможно загрузить один или несколько запрошенных типов. Не удалось загрузить файл или сборку PresentationFramework, Версия = 4.0.0.0, Культура = нейтральная, PublicKeyToken = 31bf3856ad364e35
Загрузка "нормального" Библиотека классов сборки работают без проблем. Даже если у них есть зависимости, все загружается правильно. Однако загрузка не выполняется, как только сборка содержит WPF.
То, что я пробовал:
Я пробовал разные способы загрузки сборки, но все они терпят неудачу с указанным выше исключение:
- Использование
System.ComponentModel.Composition
с импортом и экспортом. - Использование
Assembly.LoadFrom()
. - Использование пользовательского
AssemblyLoadContext
, как описано в docs .microsoft.com .
Убедился, что путь к сборке правильный. Если я укажу недопустимые пути, сообщение об ошибке будет другим.
Подробности:
Сборка имеет целевую структуру . NET Core 3.1 и тип вывода Библиотека классов . Он использует фреймворки Microsoft.NETCore.App и Microsoft.WindowsDesktop.App.WPF .
<Project Sdk="Microsoft.NET.Sdk.WindowsDesktop">
<PropertyGroup>
<TargetFramework>netcoreapp3.1</TargetFramework>
<UseWPF>true</UseWPF>
</PropertyGroup>
</Project>
Консольное приложение имеет целевую структуру . NET Core 3.1 и тип вывода Консольное приложение . Он использует Microsoft.NETCore.App framework.
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>netcoreapp3.1</TargetFramework>
</PropertyGroup>
</Project>