You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET Framework 4.7.2调用Assembly.GetTypes加载.NET 6.0 DLL报错原因

问题描述

在.NET Framework 4.7.2应用中,通过以下代码加载.NET Core DLL:

var myAssembly = Assembly.LoadFrom(@"c:\temp\mylib.dll");

随后调用myAssembly.GetTypes()获取类型时,抛出如下异常:

Unable to load one or more of the requested types. retrieve the loaderexceptions property for more information.

已知被加载的mylib.dll依赖同目录下的另一个DLL,请问该异常产生的原因是什么?

异常原因分析
  • 运行时框架不兼容:.NET Framework与.NET Core属于不同的运行时体系,.NET Core DLL依赖的是.NET Core/.NET 5+专属的基础类库,.NET Framework 4.7.2无法识别这些框架专属的类型,加载过程中会因找不到对应类型触发异常。
  • 依赖加载路径不匹配:Assembly.LoadFrom仅加载指定路径的目标DLL,但不会自动将该路径纳入依赖搜索范围。.NET Framework的程序集加载逻辑默认从应用程序基目录、全局程序集缓存(GAC)等位置查找依赖,而非被加载DLL所在的目录,导致同目录下的依赖DLL无法被定位,进而引发类型加载失败。
  • 程序集格式存在差异:.NET Core DLL采用包含runtime.config.json等配置的.NET标准程序集格式,与.NET Framework的程序集结构有本质区别,.NET Framework的加载器无法正确解析这类程序集的依赖关系和类型信息。

内容的提问来源于stack exchange,提问作者user788454

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 20:25:47