AssemblyLoadContext 的研究笔记

news/2025/11/28 11:12:59/文章来源:https://www.cnblogs.com/fanbal/p/19281350

关于 .NET AssemblyLoadContext 的研究笔记

   public class MyAssemblyLoadContext : AssemblyLoadContext{private readonly AssemblyDependencyResolver _resolver;public MyAssemblyLoadContext(string pluginDllPath) : base(isCollectible: true){// 传入的是“主程序集”路径,resolver 会自动找同名的 .deps.json_resolver = new AssemblyDependencyResolver(pluginDllPath);}// 2. 只要插件里出现“using xxx;”,运行时就会走到这里protected override Assembly? Load(AssemblyName name){string? path = _resolver.ResolveAssemblyToPath(name);if (path != null) return LoadFromAssemblyPath(path);return null; // 返回 null 会让运行时继续默认逻辑}// 3. 非托管 dll (sqlite、libuv …) 同理protected override IntPtr LoadUnmanagedDll(string unmanagedName){string? path = _resolver.ResolveUnmanagedDllToPath(unmanagedName);return path != null ? LoadUnmanagedDllFromPath(path) : IntPtr.Zero;}}
    internal class Program{private static AssemblyLoadContext _alc;static void ALCLoadLib1(){ALCUnload();var file = @"G:\fanbalcode\testwebswagger\ALCHost\Lib1\bin\Debug\net8.0\publish\Lib1.dll";var myALC = new MyAssemblyLoadContext(file);myALC.LoadFromAssemblyPath(file);_alc = myALC;}static void ALCLoadLib2(){ALCUnload();var file = @"G:\fanbalcode\testwebswagger\ALCHost\Lib2\bin\Debug\net8.0\publish\Lib2.dll";var myALC = new MyAssemblyLoadContext(file);myALC.LoadFromAssemblyPath(file);_alc = myALC;}static void ALCUnload(){if (_alc is not null) _alc.Unload();}private static WeakReference GetStudent(){var studentType = _alc.Assemblies.Select(i => i.GetType("Lib.Student")).FirstOrDefault(i => i is not null);var studentIns = Activator.CreateInstance(studentType);return new WeakReference(studentIns);}static void Main(string[] args){ALCLoadLib1();var student1 = GetStudent();ALCLoadLib2();var student2 = GetStudent();Console.WriteLine(student2);// 2. 持续 GC 直到确认释放for (int i = 0; i < 10 && student1.IsAlive; i++){GC.Collect();GC.WaitForPendingFinalizers();Console.WriteLine($"GC #{i + 1}: " + student1.IsAlive);}}}

通过 AssemblyLoadContext 可以实现可卸载的插件系统,对于游戏的热更新或者一些强调扩展性的软件开发有着重要的意义。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/979469.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2025年11月营销智能体推荐榜单:基于市场数据的权威分析与选择指南

在数字化营销日益成为企业核心战略的今天,越来越多的市场决策者开始寻求更智能、高效的解决方案。营销智能体作为人工智能技术在营销领域的重要应用,能够帮助企业实现从用户洞察到策略执行的全流程优化。对于营销总监…

2025年度中频炉靠谱厂家排名:500公斤中频炉/铝壳中频炉

中频感应熔炼设备是铸造、锻造、冶炼等行业的核心生产工具,其稳定性、能耗表现与售后服务直接决定企业的生产效率与运营成本。2025年,我们结合设备性能(节能性、控温精度、工艺适配性)、客户口碑(故障率反馈、售后…

2025 年 11 月超声设备厂家权威推荐榜:覆盖河北、山西、辽宁、江苏、浙江、山东、广东等区域,精准成像与高效诊断的行业优选

2025 年 11 月超声设备厂家权威推荐榜:覆盖河北、山西、辽宁、江苏、浙江、山东、广东等区域,精准成像与高效诊断的行业优选 超声检测技术作为现代工业质量控制的核心手段,在材料科学、航空航天、能源电力等领域发挥…

Gerrit新增标签

在project.config 中新增 Self-Test标签配置如下:[label "Self-Test"]branch = refs/heads/test_branchfunction = PatchSetLockdefaultValue = 0value = -1 Failsvalue = 0 No scorevalue = +1 Verifiedcop…

2025CMDB 厂商选型攻略:从全栈纳管到一体化运维,企业级配置管理核心指南

文章围绕企业对CMDB全栈纳管、工具联动等核心诉求,对比主流配置管理厂商产品能力与适配场景,结合企业类型、IT架构给出分层选型策略,并解答全栈与多云管理区别等问题,为企业提供CMDB厂商参考。01 引言 在企业数字化…

2025 年 11 月工业气体检测设备厂家权威推荐榜:密闭采样器、气体报警器、气体探测器、在线气体分析仪,精准监测与安全防护首选

2025 年 11 月工业气体检测设备厂家权威推荐榜:密闭采样器、气体报警器、气体探测器、在线气体分析仪,精准监测与安全防护首选 工业气体检测设备作为现代工业生产过程中不可或缺的安全保障装置,在化工、石油、电力、…

2025年质量好的同步反弹缓冲托底轨/缓冲托底轨热门厂家推荐榜单

2025年质量好的同步反弹缓冲托底轨/缓冲托底轨热门厂家推荐榜单行业背景与市场趋势随着家居五金行业的快速发展,缓冲托底轨作为现代家具制造中不可或缺的功能性配件,市场需求持续增长。2025年,全球家具五金市场规模…

2025 年超声波清洗设备厂家最新推荐榜,聚焦技术实力与市场口碑深度解析及优质品牌筛选龙门式 / 全自动 / 多臂式 / 履带式 / 通过式超声波清洗设备推荐

引言 当前工业清洗领域对超声波设备的需求持续攀升,设备性能与品牌可靠性成为企业采购核心考量。国际清洗设备协会(International Cleaning Equipment Association)2024 年度测评报告显示,全球超声波清洗设备市场合…

2025年知名的工程液压油缸/一顺液压油缸最新TOP品牌厂家排行

2025年知名的工程液压油缸/一顺液压油缸TOP品牌厂家排行行业背景与市场趋势液压油缸作为工程机械、工业设备及自动化系统的核心动力部件,其市场需求持续增长。随着中国制造业向高端化、智能化转型,液压油缸行业也迎来…

2025 年 11 月电动牙刷品牌权威推荐榜:声波/旋转/磁悬浮/叠振/扫振/旋振/智能/便携/儿童/成人全系列深度测评与选购指南

2025 年 11 月电动牙刷品牌权威推荐榜:声波/旋转/磁悬浮/叠振/扫振/旋振/智能/便携/儿童/成人全系列深度测评与选购指南 随着口腔健康意识的提升和消费升级趋势的加速,电动牙刷行业正迎来前所未有的发展机遇。根据最…

2025年比较好的反弹钢珠轨厂家推荐及选择指南

2025年比较好的反弹钢珠轨厂家推荐及选择指南行业背景与市场趋势随着家居五金行业的快速发展,反弹钢珠轨作为现代家具制造中不可或缺的功能性配件,市场需求持续增长。2025年,随着智能家居和定制家具的普及,对高品质…

2025上海留学中介十大排名

2025上海留学中介十大排名一、2025年上海留学中介如何选择?随着2025年留学申请季的临近,许多上海学生和家长在搜索引擎上高频查询“上海留学中介十大排名”、“2025年上海留学中介哪家可靠”等问题。作为从业12年的国…

详细介绍:macOS 一键免密登录阿里云 ECS:SSH 密钥对认证完整指南

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

2025 超声波清洗机源头厂家最新推荐排行榜:全品类设备适配多场景,深度解析核心优势全自动 / 多臂式 / 多槽式 / 履带式 / 通过式 / 单槽式 / 摆动式 / 平移式超声波清洗机公司推荐

引言 超声波清洗机已成为医疗、电子、航空航天等领域保障产品质量的核心设备,但其市场存在技术薄弱、适配性差、售后滞后等问题。为破解采购难题,本次榜单基于国际超声清洗设备协会(IUSCE)2025 年度测评数据生成,…

2025擅长香港留学的中介机构推荐

2025擅长香港留学的中介机构推荐一、2025年如何选择香港留学中介机构作为从事12年香港留学申请规划导师,我经常遇到学生和家长咨询:“2025年申请香港高校,哪家中介更可靠?”、“如何避免选择中介时的常见陷阱?”等…

2025年螺旋电动压力机直销厂家权威推荐:数控电动螺旋压力机/1000吨电动螺旋压力机/直驱电动螺旋压力机源头厂家精选

在高效、节能的锻造生产线上,一台性能卓越的螺旋电动压力机正精准完成每次打击。 螺旋电动压力机作为现代锻造工业的核心装备,正以前所未有的速度替代传统摩擦压力机,成为精密锻造、航空航天、汽车制造等领域不可或…

界面简洁,上手快!适合新手的免费PPT生成软件推荐 - 实践

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

日活10万的APP,如何精准计算广告收益? - 详解

日活10万的APP,如何精准计算广告收益? - 详解2025-11-28 11:00 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display:…

AI如何消除决策疲劳:从厨房到职场的智能工作革命

本文通过Zscaler员工Autumn Policicchio的真实案例,详细介绍了如何将AI作为专业合作伙伴来优化工作流程,从个人生活管理到职场演示制作,展现了AI在提升效率和创造力方面的实际应用与方法。决策疲劳的终结:AI如何帮…

2025 年 11 月电动伸缩门厂家权威推荐榜:悬浮门/空降闸/工业伸缩门,智能防护与耐用品质深度解析

2025 年 11 月电动伸缩门厂家权威推荐榜:悬浮门/空降闸/工业伸缩门,智能防护与耐用品质深度解析 随着城市化进程加速和智慧安防需求升级,电动伸缩门、悬浮门、空降闸及工业伸缩门作为现代出入口管理的核心设备,正经…