J'utilise donc une réflexion pour appeler une fonction d'une DLL sur un lecteur réseau. Le problème est que la DLL nécessite une autre DLL et il est dans ce même dossier, mais une exception est levée.L'utilisation de la réflexion pour appeler une DLL mais une autre DLL requise lance une exception
Voici mon code:
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);
}
L'exception que je reçois est la suivante:
{ "Impossible de charger 'SeaMAX.dll' DLL. Le module spécifié est introuvable (Exception HRESULT: 0x8007007E) "}
Le SeaMAX.dll est requis avec le BonderControlPanelSim.dll.
Mon problème est que la DLL est dans le même dossier ... mais ma DLL lorsque la réflexion est utilisée pour invoquer un membre ne peux pas trouver la DLL ... mais c'est là. Ai-je manqué quelque chose
Donc, votre problème est ??? Il semble qu'il ne puisse pas trouver SeaMAX.dll. Est-SeaMAX.dll quelque part. NET devrait être en mesure de le trouver? –
Oui, j'ai mis à jour ma question, mais SeaMAX.dll est dans le même emplacement que le BonderControlPanelSim.dll et BonderControlPanelSim.dll utilise la DLL SeaMAX. –