我的应用程序在运行时从特定子文件夹动态加载程序集.这些程序集编译时依赖于其他程序集.运行时尝试从应用程序目录加载这些内容.但我想将它们放入模块目录中.
有没有办法告诉运行时dll在一个单独的子文件夹中?
我最近使用的一个很好的方法是为AppDomain的AssemblyResolve事件添加一个事件处理程序.
AppDomain currentDomain = AppDomain.CurrentDomain; currentDomain.AssemblyResolve += new ResolveEventHandler(MyResolveEventHandler);
然后在事件处理程序方法中,您可以使用Assembly.Load,Assembly.LoadFrom覆盖之一加载试图解析的程序集,并从该方法返回它.
编辑:
根据您的其他信息,我认为使用上述技术,特别是自己解决对程序集的引用是唯一真正的方法,无需重组您的应用程序即可运行.它给你的是CLR无法解决的每个程序集的位置可以在运行时由代码确定和加载...我在类似的情况下使用它来实现可插拔体系结构和程序集参考完整性扫描工具.