【发布时间】:2011-05-08 00:39:44
【问题描述】:
所以我使用一些反射从网络驱动器上的 dll 调用函数。问题是 dll 需要另一个 dll,并且它在同一个文件夹中,但会引发异常。
这是我的代码:
try
{
Assembly loadedDLL = Assembly.LoadFrom(@"G:\Remote\Debug\BonderControlPanelSim.dll", AppDomain.CurrentDomain.Evidence);
Type rtsObj = loadedDLL.GetType("Oe.Te.Ranorex.Instrument.BonderControlPanelSim");
Object obj = Activator.CreateInstance(rtsObj);
rtsObj.InvokeMember("Initialize", BindingFlags.InvokeMethod | BindingFlags.Public | BindingFlags.Instance, null, obj, new object[] { "COM3", 1, 2 });
Thread.Sleep(1500);
rtsObj.InvokeMember("PushStart", BindingFlags.InvokeMethod | BindingFlags.Public, null, obj, new object[] { "3" });
Thread.Sleep(200);
rtsObj.InvokeMember("Shutdown", BindingFlags.InvokeMethod | BindingFlags.Public, null, obj, null);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
我得到的例外是:
{“无法加载 DLL 'SeaMAX.dll':找不到指定的模块。(HRESULT 异常:0x8007007E)”}
BonderControlPanelSim.dll 需要 SeaMAX.dll。
我的问题是 dll 在同一个文件夹中......但是当我使用反射调用成员时,我的 dll 找不到 dll......但它在那里。我错过了什么
【问题讨论】:
-
那么,你的问题是???看起来它找不到 SeaMAX.dll。 SeaMAX.dll 是否在某个 .NET 应该能够找到的地方?
-
是的,我更新了我的问题,但 SeaMAX.dll 与 BonderControlPanelSim.dll 位于同一位置,并且 BonderControlPanelSim.dll 使用 SeaMAX dll。
标签: c# .net exception reflection