当前位置:  开发笔记 > 编程语言 > 正文

加载程序集及其依赖项

如何解决《加载程序集及其依赖项》经验,为你挑选了1个好方法。

我的应用程序在运行时从特定子文件夹动态加载程序集.这些程序集编译时依赖于其他程序集.运行时尝试从应用程序目录加载这些内容.但我想将它们放入模块目录中.

有没有办法告诉运行时dll在一个单独的子文件夹中?



1> Shaun Austin..:

我最近使用的一个很好的方法是为AppDomain的AssemblyResolve事件添加一个事件处理程序.

AppDomain currentDomain = AppDomain.CurrentDomain;
currentDomain.AssemblyResolve += new ResolveEventHandler(MyResolveEventHandler);

然后在事件处理程序方法中,您可以使用Assembly.Load,Assembly.LoadFrom覆盖之一加载试图解析的程序集,并从该方法返回它.

编辑:

根据您的其他信息,我认为使用上述技术,特别是自己解决对程序集的引用是唯一真正的方法,无需重组您的应用程序即可运行.它给你的是CLR无法解决的每个程序集的位置可以在运行时由代码确定和加载...我在类似的情况下使用它来实现可插拔体系结构和程序集参考完整性扫描工具.


这种技术的一个很好的例子是LINQPad应用程序.它作为单个exe提供,因此所有库都作为嵌入式资源包含在内.有关代码,请访问http://www.albahari.com/nutshell/ch16.aspx;有关见解,请访问http://www.linqpad.net/HowLINQPadWorks.aspx.
推荐阅读
小色米虫_524
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有