Jo
aber ich hab das jetzt irgendwie hinbekommen. Hab eine neue Solution erstellt und alles noch mal neu gemacht. Und irgendwie funzt es jetzt. Ich werd mir aber deinen Beitrag noch mal grundlich durchlesen
Danke für eure Hilfe
Hi,
ich bin seit einigen Tagen dabei einen Windows-Dienst zu programmieren der dynamisch DLLs (in C# geschrieben) lädt. Um Fehler besser zu finden hab ich das erst in einem Consolenprog geschrieben.
Assembly SampleAssembly;
SampleAssembly = Assembly.LoadFrom(@"C:\sample.dll");
MethodInfo Method = SampleAssembly.GetTypes()[0].GetMethod("TestMethode");
string[] para = new string[2];
para[0] = "test";
para[1] = "test";
Method.Invoke(null,para);
wenn ich das in den Dienst einfüge, erhalte ich im EventLog folgende Fehlermeldung
System.ArgumentNullException: Wert darf nicht Null sein.
Parametername: assemblyFile
at System.Reflection.Assembly.LoadFrom(String assemblyFile, Evidence securityEvidence, Byte[] hashValue, AssemblyHashAlgorithm hashAlgorithm)
at System.Reflection.Assembly.LoadFrom(String assemblyFile, Evidence securityEvidence)
at LoaderLib.Load.Loader()
d.h. es muss der Parameter Evidence mit irgendeinem "Beweis" gefüllt werden.
Dann gibt es noch die Möglichkeit mit dem DLLImporter eine DLL dynamisch zu laden. Die Beispiele die ich gefunden hatte beschrieben immer wie man in C geschriebe DLLs importiert. Ich habts dann mal probiert eine C# DLL zu importieren. Es geht alles soweit. Doch die Methode die ich angebe wird nicht gefunden...
Meine Frage nun: Wie kann ich dynamisch eine DLL in einem Windows-Dienst laden. Vielleicht weis jemand wie das Problem bei Assembly.LoadFrom gelöst werden kann. Wenn jemand die Testprogramme haben möchte, kann ich sie ihm zuschicken...
DANKE