博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
只有ReflectionOnlyLoadFrom才可以拯救与GAC冲突的强命名程序集
阅读量:5143 次
发布时间:2019-06-13

本文共 990 字,大约阅读时间需要 3 分钟。

先说结论,如果有两个拥有相同程序集名称的强命名程序集,一个在GAC里,一个不在。怎样动态加载那个不在GAC里的程序集?答案就是只有Assembly.ReflectionOnlyLoadFrom才可以加载这个程序集,

比如我们把system.dll文件拷贝到D盘(注意应用程序域默认会加载mscorlib.dll,而不是system.dll)。然后试试用下面的方法:

var path = @"D:\system.dll";//Load(byte[])Assembly.Load(File.ReadAllBytes(path));//LoadFrom(string)Assembly.LoadFrom(path);//LoadFile(string)Assembly.LoadFile(path); foreach (var ass in AppDomain.CurrentDomain.GetAssemblies())         {
          Console.WriteLine(ass.Location);        }
 

输出中将会有.NET Framework GAC中的system.dll,而不是我们在D盘的system.dll

C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System\.Net版本\System.dll

好吧,只有ReflectionOnlyLoadFrom才可以最后使用这个文件。

var path = @"D:\system.dll";   //ReflectionOnlyLoadFrom(string)   Assembly.ReflectionOnlyLoadFrom(path);   //注意用AppDomain.ReflectionOnlyGetAssemblies()
foreach (var ass in AppDomain.CurrentDomain.GetAssemblies())         {
          Console.WriteLine(ass.Location);        }

输出:

D:\system.dll

 

转载于:https://www.cnblogs.com/yxhblog/p/7363222.html

你可能感兴趣的文章
JIRA
查看>>
小技巧——直接在目录中输入cmd然后就打开cmd命令窗口
查看>>
深浅拷贝(十四)
查看>>
由级别和性格特征将程序员分类 ---看看你属于哪一种
查看>>
HDU 6370(并查集)
查看>>
BZOJ 1207(dp)
查看>>
PE知识复习之PE的导入表
查看>>
HDU 2076 夹角有多大(题目已修改,注意读题)
查看>>
洛谷P3676 小清新数据结构题(动态点分治)
查看>>
九校联考-DL24凉心模拟Day2T1 锻造(forging)
查看>>
洛谷 P3237 [HNOI2014]米特运输
查看>>
Attributes.Add用途与用法
查看>>
JavaScript面向对象初探——封装和继承
查看>>
L2-001 紧急救援 (dijkstra+dfs回溯路径)
查看>>
javascript 无限分类
查看>>
spring IOC装配Bean(注解方式)
查看>>
[面试算法题]有序列表删除节点-leetcode学习之旅(4)
查看>>
SpringBoot系列五:SpringBoot错误处理(数据验证、处理错误页、全局异常)
查看>>
kubernetes_book
查看>>
OpenFire 的安装和配置
查看>>