动态加载Assembly的一系列恶心问题
微软这个垃圾Assembly绝对是设计垃圾。这里小结一下。
Assembly.Load 根据程序集名加载AssemblyName,考虑到了路径的唯一性等。不会出现重复。
Assembly.LoadFrom 根据路径加载,同时备份了引用关系,一旦日后需要加载引用,会根据assembly的当前位置搜索。没有考虑路径唯一,如果路径不同的相同程序集,会导致重复加载。
Assembly.LoadFile,根据路径加载,仅仅加载程序集,不备份引用。
动态加载,首先会初始化一个Appdomain,必须手动设置BasePath, 否则默认会到.net的安装路径,导致日后的加载失败。
由于Load是路径唯一的。假设我的运行路径是A,加载的程序集路径是B,当前程序集和加载程序集都引用了xx.dll这个类。
因此这个类在2个路径都存在。如果使用Load,那么B的xx.dll依赖就不会被加载,从而导致了丢失引用。
如果使用LoadFrom,那么就会出现重复加载,导致了返回类型是出错。
最终解决方法。
appdomain设置为加载点的路径
同时设置resoliveassembly方法,里面保存所有加载过的地址。当出现无法加载的情况,则读取地址加载。
另外。。。。
刚才系统http发现传输数据实在太垃圾了。比webservice的性能差了4倍。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· SQL Server 2025 AI相关能力初探
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库