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 !!!