Kann eine Registrierungsfreie COM-Komponente verwendet werden, ohne sie auf der Entwicklungsmaschine zu registrieren?

StackOverflow https://stackoverflow.com/questions/6351226

  •  28-10-2019
  •  | 
  •  

Frage

Ich habe eine Registrierungsfreie COM-Komponente, die ich entwickelt habe und die auf Zielmaschinen gut funktioniert, ohne die Komponente registrieren zu müssen. Es ist in einer DLL eingebettet, und eine RT_MANIFEST -Ressource, die das Manifest hat, das die Abhängigkeiten und CLSIDs der Montage für die Komponente auflistet.

In Visual Studio (2008) muss ich diese COM -Komponente immer noch registrieren, um mindestens zwei Dinge zu tun, die ich ausprobiert habe. Beim Hinzufügen einer Referenz zur Komponente kann ich die isolierte Eigenschaft für die Referenz nicht auswählen, es sei denn, die Komponente ist registriert. Ich kann auch keine Instanzen des Objekts erstellen, wenn der Debugger ausgeführt wird, es sei denn, die Komponente ist registriert. Ich kann jedoch die Referenz hinzufügen und die Anwendung kompilieren und ausführen, ohne die Komponente zu registrieren.

Gibt es eine Möglichkeit, eine Registrierungsfreie COM-Komponente in Visual Studio zu verwenden, ohne sie zu registrieren, oder muss sie auf dem Entwicklungsgerät registriert werden, damit alles richtig funktioniert?

War es hilfreich?

Lösung

Hier ist es wichtig, den Unterschied zwischen Kompilierungszeit und Laufzeitnutzung einer COM-Komponente zu verstehen. Reg-Free Com ist eine reine Laufzeitfunktion. Das Manifest, das Sie schreiben, das die COM-Schnittstelle beschreibt, ist der Registrierungsfreie Teil. Sie müssen die COM -Komponente nicht in der Registrierung der Maschine registrieren. Sie liefern die Registrierungsinformationen stattdessen in einer Datei. Das heißt, Sie brauchen keinen Installateur. Dies bedeutet auch, dass Sie von Registrierungsproblemen isoliert sind. Besser bekannt als Dll Hell.

Die Schlüssel in der Registrierung oder die Einträge im Manifest sind wichtig, um COM zu helfen, herauszufinden, was DLL geladen werden muss, wenn der COM -Client ihn auffordert, eine Instanz des COM -Objekts zu erstellen.

Dies unterscheidet sich sehr von der Kompilierung. Eine Typbibliothek ist sehr hilfreich, um dem Compiler mitzuteilen, ob Sie den richtigen Code geschrieben haben oder nicht. Hat die COM -Komponente wirklich eine Ifoo -Schnittstelle? Hat die Ifoo -Schnittstelle wirklich eine Mumble () -Methode, die zwei Argumente annimmt? Die Typbibliothek teilt dem Compiler mit, wie die Schnittstelle aussieht, und ermöglicht es dem Compiler, den von Ihnen geschriebenen Code statisch zu überprüfen. Unterscheidet von "spätbindend", ist eine Option, mit der Sie COM-Client-Code ohne Bibliothek schreiben können (und damit ohne Typ-Überprüfung). Häufig in Skriptsprachen.

Wiederholung: Registrierungsfreies COM geht nur um Installation, nicht um das Schreiben von Code.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top