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

.NET 4.7.2获取接口实现时System.Runtime.Loader加载失败问题解决

解决.NET 4.7.2中获取接口实现时抛出System.Runtime.Loader加载异常的问题

嘿,这个坑我踩过!咱们先搞清楚问题出在哪,再给你靠谱的解决办法:

问题原因

.NET Framework 4.7.2本身并不自带System.Runtime.Loader这个程序集——它是**.NET Core/.NET 5+**生态里的专属组件。当你调用AppDomain.CurrentDomain.GetAssemblies()时,它会枚举当前应用域中已加载的所有程序集,其中大概率混入了依赖.NET Core组件的第三方包或跨平台类库,导致在.NET Framework环境下找不到这个缺失的程序集,最终触发加载异常。

解决方法

1. 精准过滤程序集,避免加载无关组件

最直接的办法是只处理你自己的业务程序集,跳过系统或第三方的可疑程序集。修改你的代码,加上针对性过滤逻辑:

var entityNames = AppDomain.CurrentDomain.GetAssemblies()
    // 示例:只保留你自己项目的程序集(替换成你的命名空间前缀)
    .Where(asm => asm.FullName.StartsWith("YourCompany.YourProject"))
    // 或者反过来,排除系统和微软的基础程序集
    // .Where(asm => !asm.FullName.StartsWith("System.") && !asm.FullName.StartsWith("Microsoft."))
    .SelectMany(x => x.GetTypes())
    .Where(x => typeof(IAggregateRoot).IsAssignableFrom(x) && !x.IsInterface && !x.IsAbstract)
    .Select(x => x.Name)
    .ToList();

这样就能避免触发那些依赖.NET Core组件的程序集加载逻辑。

2. 安装兼容的System.Runtime.Loader NuGet包

如果你的项目确实需要依赖这个程序集(比如某些第三方库强制要求),可以直接通过NuGet安装适配.NET Framework 4.7.2的版本:

  • 打开NuGet包管理器,搜索System.Runtime.Loader
  • 选择4.3.0版本(这个版本明确支持.NET Framework 4.6.1及以上,完美兼容4.7.2)
  • 安装后,该程序集会被复制到项目输出目录,加载异常会自动消失。

3. 检查并替换跨平台NuGet包

排查你的项目引用,看看有没有不小心引入了仅针对.NET Core的包。很多类库会分.NET Framework和.NET Core版本,确保你安装的是标注支持.NET Framework 4.7.2的包版本,替换掉那些跨平台的依赖项,从根源上消除不兼容问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 23:02:36