Загрузить сборку WPF из консольного приложения - PullRequest
0 голосов
/ 03 августа 2020

Как я могу динамически загрузить WPF User Control Library из консольного приложения?

Описание проблемы:

У меня есть сборка, скомпилирован как WPF User Control Library и вы хотите загрузить его из консольного приложения с помощью отражения. К сожалению, я получаю System.Reflection.ReflectionTypeLoadException с этим сообщением:

Невозможно загрузить один или несколько запрошенных типов. Не удалось загрузить файл или сборку PresentationFramework, Версия = 4.0.0.0, Культура = нейтральная, PublicKeyToken = 31bf3856ad364e35

Загрузка "нормального" Библиотека классов сборки работают без проблем. Даже если у них есть зависимости, все загружается правильно. Однако загрузка не выполняется, как только сборка содержит WPF.

То, что я пробовал:

Я пробовал разные способы загрузки сборки, но все они терпят неудачу с указанным выше исключение:

  1. Использование System.ComponentModel.Composition с импортом и экспортом.
  2. Использование Assembly.LoadFrom().
  3. Использование пользовательского 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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...