从控制台应用程序加载WPF程序集

时间:2020-08-03 15:14:57

标签: wpf reflection .net-assembly .net-core-3.1

如何从控制台应用程序动态加载 WPF用户控件库

问题描述:

我有一个编译为 WPF用户控件库的程序集,并希望使用反射从控制台应用程序中加载它。不幸的是,我收到System.Reflection.ReflectionTypeLoadException并显示以下消息:

无法加载一种或多种请求的类型。无法加载文件或程序集'PresentationFramework,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35

加载“普通” 类库程序集可以正常工作。即使它们具有依赖性,也可以正确加载所有内容。但是,程序集包含WPF时,加载失败。

我尝试过的事情:

我尝试了不同的方式来加载程序集,但是所有方法都因上述异常而失败:

  1. System.ComponentModel.Composition与进出口配合使用。
  2. 使用Assembly.LoadFrom()
  3. 按照docs.microsoft.com中的说明使用自定义AssemblyLoadContext

我确保程序集的路径正确。如果我指定了无效路径,则错误消息会有所不同。

详细信息:

程序集具有目标框架 .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 框架。

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>netcoreapp3.1</TargetFramework>
  </PropertyGroup>
</Project>

0 个答案:

没有答案