惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Google DeepMind News
Google DeepMind News
Apple Machine Learning Research
Apple Machine Learning Research
博客园_首页
爱范儿
爱范儿
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
罗磊的独立博客
M
MIT News - Artificial intelligence
D
Docker
量子位
T
Tailwind CSS Blog
人人都是产品经理
人人都是产品经理
月光博客
月光博客
有赞技术团队
有赞技术团队
J
Java Code Geeks
A
About on SuperTechFans
P
Proofpoint News Feed
Jina AI
Jina AI
Y
Y Combinator Blog
T
The Blog of Author Tim Ferriss
The GitHub Blog
The GitHub Blog
Microsoft Security Blog
Microsoft Security Blog
V
V2EX
GbyAI
GbyAI
F
Fortinet All Blogs

博客园 - 什么都不知道

DataSet的Xml序列化问题 VB.NET的一个小问题 Access is denied的问题 - 什么都不知道 存储过程output参数问题 SQL Server的效率? datagrid刷新问题 使用Visio DrawingControl的应用开发(补) 突起效果的Label WinForm下TextBox的数据绑定和更新 使用Radio按钮选择DataGrid行 使用VSA给程序加上脚本支持 删除所有Windows组件 在ASP.NET中嵌入wml标记 c#中动态装载dll 处理大型xml文件 RedirectToMobilePage的问题 使用Visio 2003 Drawing Control开发应用(3)(4) 使用Visio 2003 Drawing Control开发应用(2) 使用Visio 2003 Drawing Control开发应用(1)
如何在运行时加载不处于应用程序目录下的assembly
什么都不知道 · 2004-09-16 · via 博客园 - 什么都不知道

通常来说一个程序添加了引用之后,最后执行时简单将所有引用到的assembly放在同一个目录下就可以了。不过,也可能需要这样的情况,就是使用到不是同一个目录下的assembly。
这个问题在KB 837908中有描述,讲了如下三种方法:
第一个方法:将assembly放到GAC中
第二个方法:就是在.config文件中加入<codeBase>标签
如:

第三个方法:使用AssemblyResolve事件
这个方法利用了AppDomain的AssemblyResolve事件,在程序开始注册这个事件,然后就可以在这个事件中处理了。比如:

除了这三种方法外,还有如下的方法
第一个方法就是使用反射,自己动态Load assembly。这种方法不是很好,因为这样不能添加这个assembly的引用,所以要在程序中反射得出方法、属性等。
第二:如果要用到的assembly是处于需要引用程序执行文件的下级子目录中,就可以有下面两种方式:
a、使用probing元素,如

b、利用AppDomain的AppendPrivatePath
比如:AppDomain.CurrentDomain.AppendPrivatePath("common");