如何从控制台应用程序动态加载 WPF用户控件库?
问题描述:
我有一个编译为 WPF用户控件库的程序集,并希望使用反射从控制台应用程序中加载它。不幸的是,我收到System.Reflection.ReflectionTypeLoadException
并显示以下消息:
无法加载一种或多种请求的类型。无法加载文件或程序集'PresentationFramework,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35
加载“普通” 类库程序集可以正常工作。即使它们具有依赖性,也可以正确加载所有内容。但是,程序集包含WPF时,加载失败。
我尝试过的事情:
我尝试了不同的方式来加载程序集,但是所有方法都因上述异常而失败:
System.ComponentModel.Composition
与进出口配合使用。Assembly.LoadFrom()
。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>