COM interop DLL verteilen

13/11/2007 - 08:09 von Frank Heindörfer | Report spam
Hallo NG,

ich habe mit VS 2005 und MSBee eine .Net 1.1 DLL erstellt, bei der ich
"COM interop" aktiviert und COMVisible auf True gesetzt. .Net 1.1 war
notwendig, da diese DLL auf Methoden einer anderen, bereits erstellten,
.Net 1.1 DLL zugreift. Ziel ist es mit "Visual Basic 6" auf Funktionen
der ersten DLL zuzugreifen. Auf dem Entwicklungsrechner funktioniert
auch alles.

Nun möchte ich das Programm-Paket (VB6-Exe, .Net DLLs) auf einen Win98
mit installierten ".NET Framework Version 1.1 Redistributable Package"
installieren. Ich verwende dazu InnoSetup. Jedoch kann ich keine Objekte
auf diesem Win98 aus der 1. DLL erstellen. Anscheinend hat die
Registrierung nicht geklappt. Ich dachte es reicht aus die 1.DLL per
"regasm MyDLL.dll" zu registrieren.

Nun meine Frage: Wie mache ich es richtig? Wie registriere ich eine
.Net-COM-Dll so, dass ich von VB6 aus zugreifen kann? Und was muss ich
machen, damit man von VBScript auf die Methoden zugreifen kann? (Für
VBScript noch die TLB registrieren?)

Tschüss Frank
 

Lesen sie die antworten

#1 Günter Prossliner
13/11/2007 - 14:38 | Warnen spam
Hallo Frank!

Ziel ist es mit "Visual Basic 6"
auf Funktionen der ersten DLL zuzugreifen. Auf dem
Entwicklungsrechner funktioniert auch alles.



Verwendest Du dort die automatische Registrierung aus VS?

Ich dachte es reicht aus die 1.DLL
per "regasm MyDLL.dll" zu registrieren.



Ja und nein. Ja weil alle notwendigen Informationen zum Lokalisieren der
Klasse registriert sind. Nein, weil - unabhànig von der COM-Registrierung -
die CLR in der Lage sein muss, die Dll zu finden.

Dazu gibt es in der einfachen Variante zwei Möglichkeiten:
1. Assembly in den GAC installieren
2. die Pfad-Information (Codebase) zusàtzlich in der Registry hinterlegen.
Das kannst Du mit "regasm MyDLL.dll /codebase" machen.

Und was muss ich
machen, damit man von VBScript auf die Methoden zugreifen kann?



Wenn die Klassen korrekt attibutiert sind, können Scriptingsprachen auf die
Klassen zugreifen. IDispatch muss unterstützt werden. Ist aber IIRC
default-Einstellung.



OK?
mfg GP

Ähnliche fragen