Laden...
S
sylencer
myCSharp.de - Member
1
Themen
2
Beiträge
Letzte Aktivität
vor 20 Jahren
Dabei seit
14.02.2005
Alter
40
Erstellt vor 20 Jahren

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

Erstellt vor 20 Jahren

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