动态调用DLL时不能加载依赖的程序集
来源:互联网 发布:淘宝提前收款怎么用 编辑:程序博客网 时间:2024/04/26 07:29
假设有2个DLL, Class1和Class2. Class1引用Class2, 并调用Class2里的方法。
//Class1.Dll
namespace feiyun0112.cnblogs.com
{
public class Class1
{
public void DoSomething() { Class2.Hello(); }
}
}
//Class2.Dll
namespace feiyun0112.cnblogs.com
{
public class Class2
{
public static void Hello() { MessageBox.Show("Hello World!"); }
}
}
如果我们动态调用Class1里的方法,会报无法加载"Class2"的异常
string path = @"C:\test\Class1.dll";
Assembly assembly = Assembly.LoadFile(path);
Type type = assembly.GetType("feiyun0112.cnblogs.com.Class1");
object obj = Activator.CreateInstance(type);
MethodInfo method = type.GetMethod("DoSomething", BindingFlags.Public | BindingFlags.Instance);
if (method != null)
{
method.Invoke(obj, null);
}
解决的方法其实也很简单,在对程序集的解析失败时, 会触发AppDomain.AssemblyResolve事件, 我么只需要在事件中进行处理,
将需要的Dll加载到应用程序域,动态调用的程序集就可以正常使用了。
AppDomain currentDomain = AppDomain.CurrentDomain;
currentDomain.AssemblyResolve += new ResolveEventHandler(MyResolveEventHandler);
static Assembly MyResolveEventHandler(object sender, ResolveEventArgs args)
{
string strFielName = args.Name.Split(',')[0];
return Assembly.LoadFile(string.Format( @"C:\test\{0}.dll",strFielName));
}
0 0
- 动态调用DLL时不能加载依赖的程序集
- 动态调用DLL时不能加载依赖的程序集
- C#调用c++封装的dll文件提示未能加载正确的程序集XXX或其某一依赖项。。。
- 动态加载调用DLL里的类
- 动态加载类(在程序中调用DLL文件)
- 动态加载类(在程序中调用DLL文件)
- 如何在托管程序中动态加载dll并且调用其中的函数
- 未能加载文件或程序集"*.dll“或它的某一个依赖项,试图加载格式不正确的程序
- 未能加载文件或程序集“MySql.Data.dll”或它的某一个依赖项。
- 未能加载文件或程序集“System.Data.SQLite.DLL”或它的某一个依赖项
- dll的动态加载
- DLL的类库怎样实现动态加载调用
- DLL的类库怎样实现动态加载调用
- DLL的类库怎样实现动态加载调用
- DLL的动态调用
- dll的动态调用
- VC运行库依赖导致的InnoSetup安装程序调用DLL报错:无法导入DLL
- 查看程序或dll依赖的dll
- uva1393
- wokao
- 个人笔记 html 04 提交表单与跳转页面冲突时
- 23种设计模式(3):抽象工厂模式
- 【差分约束】BZOJ 2330: [SCOI2011]糖果
- 动态调用DLL时不能加载依赖的程序集
- 1003. 我要通过!(20)
- Kinect视觉SLAM技术介绍
- 面试笔试杂项积累-leetcode 76-80
- CodeForces 543B Destroying Roads(最短路BFS)
- java数据库编程——执行SQL 语句
- CentOS下安装python-mysqldb
- 网络流 最大流 ISAP算法
- 后PPT时代