a。我的C#程序将加载一个dll(这是动态的),现在我们来看看a.dll(同样,我的程序会加载更多dll,比如b.dll,c.dll等)。无法加载dll或其依赖项之一
b。我的程序将在a.dll中调用一个“Onstart”方法(对于所有的dll来说它是不变的)。
我能通过反射机制实现上述2种情况。
问题是
a。如果我的a.dll有任何参考说xx.dll或yy.dll,那么当我尝试调用
从我的程序的OnStart方法。我得到“无法加载dll或它的一个依赖项”。 见代码段
Assembly assm = Assembly.LoadFrom(@"C:\Balaji\Test\a.dll");
foreach (Type tp in assm.GetTypes())
{
if (tp.IsClass)
{
MethodInfo mi = tp.GetMethod("OnStart");
if (mi != null)
{
object obj = Activator.CreateInstance(tp);
mi.Invoke(obj,null);
break;
}
}
}
通常我上线收到错误 “对象物obj = Activator.CreateInstance(TP);”这是因为a.dll引用了xx.dll,但在我的程序中我没有引用xx.dll。此外,我不能在我的程序中引用xx.dll,因为a.dll是一个外部程序集,可以有任何自己的参考。
Kinldy help !!!