Hallo,
ich bin gerade dabei ein Programm zu schreiben, welches diverse dlls (werden an das Programm übergeben...) als COM registriert.
Ich habe bisher die RegAsm.exe als System.Diagnostics.Process eingebunden und benutze diese mit den üblichen Aufruf:
regAsm.exe regDestination.Dll /tlb
Funktioniert super.
Mein Problem vor dem ich nun stehe ist, dass ich die Registrierung gern mittels System.Runtime.InteropServices.RegistrationService s.RegisterAssembly durchführen möchte (1. um mir das Mitschleifen der RegAsm.exe zu sparen und 2. soll die Registrierung und alles drumrum demnächst auch Usern ermöglicht werden, die keine Admin-Rechte besitzen).
Ich mache nun folgendes:
Es wird hierbei anscheinend alles ordungsgemäß durchgeführt, es wird eine tlb erstellt, etc. ABER in meiner Anwendung (Dynamics NAV) kann ich einfach keine Instanz meiner "dll" erstellen. Ich lese so oft, dass rs.RegisterAssembly(...) dasselbe macht wie RegAsm.exe...aber bei mir komme ich nicht auf dasselbe Ergebnis...hat jemand eine Idee bzw. einen Tipp?
Danke und Gruß Marco
ich bin gerade dabei ein Programm zu schreiben, welches diverse dlls (werden an das Programm übergeben...) als COM registriert.
Ich habe bisher die RegAsm.exe als System.Diagnostics.Process eingebunden und benutze diese mit den üblichen Aufruf:
regAsm.exe regDestination.Dll /tlb
Funktioniert super.
Mein Problem vor dem ich nun stehe ist, dass ich die Registrierung gern mittels System.Runtime.InteropServices.RegistrationService s.RegisterAssembly durchführen möchte (1. um mir das Mitschleifen der RegAsm.exe zu sparen und 2. soll die Registrierung und alles drumrum demnächst auch Usern ermöglicht werden, die keine Admin-Rechte besitzen).
Ich mache nun folgendes:
Code:
Assembly a = Assembly.LoadFrom(pSourcePathFile); System.Runtime.InteropServices.RegistrationServices rs = new System.Runtime.InteropServices.RegistrationServices(); rs.RegisterAssembly(a, AssemblyRegistrationFlags.None); ConversionEventHandler eventHandler = new ConversionEventHandler(); TypeLibConverter tlc = new TypeLibConverter(); IUCOMICreateITypeLib typeLib = (IUCOMICreateITypeLib)tlc.ConvertAssemblyToTypeLib(a, regDestinationTlb, TypeLibExporterFlags.None, eventHandler); typeLib.SaveAllChanges();
Danke und Gruß Marco
Comment