Aufrufen einer Visual Basic .NET- oder Visual Basic 2005-Assembly in Visual Basic 6.0

SPRACHE AUSWÄHLEN SPRACHE AUSWÄHLEN
Artikel-ID: 817248 - Produkte anzeigen, auf die sich dieser Artikel bezieht
Dieser Artikel ist eine Übersetzung des folgenden englischsprachigen Artikels der Microsoft Knowledge Base:
817248 How to call a Visual Basic .NET or Visual Basic 2005 assembly from Visual Basic 6.0
Bitte beachten Sie: Bei diesem Artikel handelt es sich um eine Übersetzung aus dem Englischen. Es ist möglich, dass nachträgliche Änderungen bzw. Ergänzungen im englischen Originalartikel in dieser Übersetzung nicht berücksichtigt sind. Die in diesem Artikel enthaltenen Informationen basieren auf der/den englischsprachigen Produktversion(en). Die Richtigkeit dieser Informationen in Zusammenhang mit anderssprachigen Produktversionen wurde im Rahmen dieser Übersetzung nicht getestet. Microsoft stellt diese Informationen ohne Gewähr für Richtigkeit bzw. Funktionalität zur Verfügung und übernimmt auch keine Gewährleistung bezüglich der Vollständigkeit oder Richtigkeit der Übersetzung.
Alles erweitern | Alles schließen

Auf dieser Seite

Einführung

Dieser Artikel beschreibt, wie Sie Microsoft Visual Basic .NET oder Microsoft Visual Basic 2005 zum Erstellen einer verwalteten Assembly verwenden, die in Microsoft Visual Basic 6.0 aufgerufen werden kann.

Weitere Informationen

Richtlinien für das Verfügbarmachen von .NET-Typen in COM

Wenn Sie Typen in einer Microsoft .NET-Assembly in COM-Anwendungen (Component Object Model, COM) verfügbar machen möchten, müssen die folgenden Voraussetzungen von COM-Interop zur Entwurfszeit erfüllt sein. Verwaltete Typen (class, interface, struct, enum usw.) interagieren gut mit COM-Clientanwendungen, wenn Sie die folgenden Richtlinien beachten:
  • Definieren Sie Schnittstellen und implementieren Sie diese explizit in Klassen. Obwohl in COM-Interop die Möglichkeit besteht, automatisch eine Schnittstelle zu generieren, die alle Member der Klasse und die der Basisklasse enthält, empfiehlt sich die Verwendung und Implementierung expliziter Schnittstellen.
  • Deklarieren Sie alle verwalteten Typen, die Sie in COM verfügbar machen möchten, als öffentlich. Nur öffentliche Typen in einer Assembly werden registriert und in die Typbibliothek exportiert. Daher werden auch nur öffentliche Typen in COM angezeigt.
  • Deklarieren Sie alle Typmember (Methoden, Eigenschaften, Felder und Ereignisse), die Sie in COM verfügbar machen möchten, als öffentlich. Die Member öffentlicher Typen müssen ebenfalls öffentlich sein, damit sie in COM angezeigt werden können. Standardmäßig werden alle öffentlichen Typen und Member angezeigt. Verwenden Sie das Attribut ComVisibleAttribute, wenn Sie die Sichtbarkeit eines Typs oder eines Members für einen Steuerelementtyp oder einen Member für COM-Clientanwendungen einschränken möchten.
  • Typen müssen einen öffentlichen Standardkonstruktor besitzen, damit sie in COM aktiviert werden können. Verwaltete, öffentliche Typen sind in COM sichtbar. Allerdings können COM-Clients ohne öffentlichen Standardkonstruktor (ein Konstruktor ohne Argumente) keine Instanz des Typs erstellen. COM-Clients können den Typ aber trotzdem verwenden, wenn er auf andere Weise aktiviert und die Instanz an den COM-Client zurückgegeben wird. Sie können überladene Konstruktoren einfügen, die variierende Argumente für diese Typen akzeptieren. Solche Konstruktoren lassen sich jedoch nur über verwalteten Code (.NET-Code) aufrufen.
  • Typen können nicht abstrakt sein. Weder COM-Clients noch .NET-Clients können abstrakte Typen erstellen.
  • Verwenden Sie die Vorlage COMClass in Visual Basic .NET oder Visual Basic 2005. Wenn Sie eine neue Klasse hinzufügen, die Sie in COM-Anwendungen verfügbar machen wollen, sollten Sie die Verwendung der Vorlage COMClass in Betracht ziehen, die von Visual Basic .NET bzw. Visual Basic 2005 bereitgestellt wird. Die Vorlage COMClass erstellt eine Klasse, die das Attribut COMClassAttribute enthält und GUIDs für die von Ihrem Typ verfügbar gemachte CLSID, Schnittstellen-ID und Ereignis-ID generiert. Außerdem erstellt die Vorlage COMClass einen öffentlichen Konstruktor ohne Parameter. Dies ist die einfachste Möglichkeit zum Erstellen einer neuen Klasse, die den Richtlinien für die Erstellung von durch COM aufrufbaren Typen entspricht.

Registrieren der .NET-Assembly für COM-Interop und Erstellen einer Typbibliothek

Damit Visual Basic 6.0 erfolgreich mit einer verwalteten Komponente interagieren kann, müssen Sie die Assembly für COM-Interop registrieren und eine Typbibliothek erstellen. Diese Registrierung muss auf allen Computern erfolgen, auf denen eine COM-Clientanwendung mit der Assembly interagiert. Die Typbibliothek stellt Typinformationen zu den in der Assembly verfügbar gemachten Typen für COM-Clientanwendungen bereit. Der hierfür notwendige Vorgang ist davon abhängig, ob Sie am Entwicklungscomputer oder am Zielcomputer arbeiten.

Auf dem Entwicklungscomputer erstellt Microsoft Visual Studio .NET oder Microsoft Visual Studio 2005 automatisch eine Typbibliothek und registriert sie im Rahmen des Erstellungsvorgangs, wenn das Kontrollkästchen Für COM-Interop registrieren in den Konfigurationseigenschaften aktiviert ist. Wenn Sie beim Erstellen der Klasse die Vorlage COMClass verwendet haben, aktiviert Visual Studio .NET bzw. Visual Studio 2005 das Kontrollkästchen Für COM-Interop registrieren automatisch. Gehen Sie folgendermaßen vor, um zu überprüfen, ob das Kontrollkästchen Für COM-Interop registrieren in Visual Studio .NET oder Visual Studio 2005 aktiviert ist:
  1. Starten Sie Visual Studio .NET oder Visual Studio 2005.
  2. Öffnen Sie die Projektmappe mit dem Projekt, das Sie für COM-Interop erstellen möchten.
  3. Klicken Sie im Menü Ansicht auf Projektmappen-Explorer.
  4. Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf das Projekt, das Sie für COM-Interop erstellen möchten, und klicken Sie anschließend auf Eigenschaften.
  5. Klicken Sie auf Konfigurationseigenschaften, und klicken Sie danach auf den Knoten Erstellen.

    Hinweis: Klicken Sie in Visual Studio 2005 im linken Teilfenster auf Kompilieren.
  6. Aktivieren Sie das Kontrollkästchen Für COM-Interop registrieren. Diese Option ist nur in Klassenbibliothekprojekten aktiviert.
  7. Klicken Sie auf OK, um das Dialogfeld Eigenschaftenseiten zu schließen.
Wenn Visual Studio .NET oder Visual Studio 2005 nicht installiert ist, oder wenn Sie eine Typbibliotheksdatei (.tlb-Datei) für die verwaltete Assembly manuell generieren und registrieren müssen, verwenden Sie das Tool für die Assembly-Registrierung (RegAsm.exe) mit der Befehlszeilenoption /TLB. Sie sollten außerdem die Befehlszeilenoption /Codebase verwenden, wenn die verwaltete Assembly eine private Assembly ist und Sie beabsichtigen, die verwaltete Assembly in einen anderen Ordner als den Ordner des Hostprozesses (EXE) zu verschieben.

Eine private Assembly wird mit einer Anwendung bereitgestellt und steht dieser Anwendung zur exklusiven Verwendung zur Verfügung. Die private Assembly wird nicht gemeinsam mit anderen Anwendungen benutzt. Private Assemblys sind für die Installation in demselben Ordner wie der Hostprozess (EXE) bestimmt. Bei einer COM-Clientanwendung bedeutet dies, dass sich die Assembly in demselben Ordner wie diese Anwendung befindet. Eine freigegebene Assembly ist zur Verwendung für mehrere Anwendungen auf dem Computer verfügbar. Um eine freigegebene Assembly zu erstellen, müssen Sie der Assembly einen eindeutigen Namen zuweisen und die Assembly im globalen Assemblycache (Global Assembly Cache, GAC) auf dem Zielcomputer installieren.

Weitere Informationen dazu, wie Sie der Assembly einen eindeutigen Namen zuweisen und wie Sie die Assembly im globalen Assemblycache (GAC) installieren, finden Sie auf der folgenden Website von Microsoft:
http://msdn2.microsoft.com/en-us/library/xc31ft41(vs.71).aspx
Sie sollten bei der Registrierung der Assembly sowohl die Befehlszeilenoption /tlb: als auch die Befehlszeilenoption /Codebase verwenden. Die Befehlszeilenoption /tlb: generiert und registriert eine Typbibliothek, und die Befehlszeilenoption /Codebase registriert den Speicherort der verwalteten Assembly in der Windows-Registrierung. Wenn Sie die Befehlszeilenoption /Codebase nicht verwenden und die Assembly nicht im globalen Assemblycache installiert wurde, müssen Sie eine Kopie der Assembly in den Ordnern der einzelnen COM-Clientanwendungen (EXE) ablegen, sodass die Assembly von der Common Language Runtime (CLR) gefunden werden kann.

Geben Sie den folgenden Befehl an einer Eingabeaufforderung ein, um eine Typbibliothek zu generieren und zu registrieren sowie den Speicherort der verwalteten Assembly zu registrieren:
Regasm Assemblyname.dll /tlb: Dateiname.tlb /codebase

Erstellen einer in COM aufrufbaren Assembly in Visual Basic .NET

  1. Starten Sie Visual Studio .NET oder Visual Studio 2005.
  2. Zeigen Sie im Menü Datei auf Neu, und klicken Sie auf Projekt.
  3. Klicken Sie unter Projekttypen auf Visual Basic-Projekte.

    Hinweis: Klicken Sie in Visual Studio2005 unter Projekttypen auf Visual Basic.
  4. Klicken Sie unter Vorlagen auf Klassenbibliothek.
  5. Benennen Sie das Projekt "TestProj", und klicken Sie dann auf OK.

    "Class1" wird standardmäßig erstellt.
  6. Klicken Sie im Menü Ansicht auf Projektmappen-Explorer.
  7. Klicken Sie mit der rechten Maustaste auf Class1.vb, und klicken Sie anschließend auf Löschen. Klicken Sie auf OK, um die Löschung der Quelldatei "Class1.vb" zu bestätigen.
  8. Klicken Sie im Menü Projekt auf Klasse hinzufügen.
  9. Klicken Sie unter Vorlagen auf COM-Klasse.
  10. Benennen Sie die Klasse "COMClass1.vb", und klicken Sie danach auf Öffnen.

    "COMClass1" wird mit dem folgenden Code erstellt.
    <ComClass(ComClass1.ClassId, ComClass1.InterfaceId, ComClass1.EventsId)> _
    Public Class ComClass1
    
    #Region "COM GUIDs"
        ' These  GUIDs provide the COM identity for this class 
        ' and its COM interfaces. If you change them, existing 
        ' clients will no longer be able to access the class.
        Public Const ClassId As String = "6DB79AF2-F661-44AC-8458-62B06BFDD9E4"
        Public Const InterfaceId As String = "EDED909C-9271-4670-BA32-109AE917B1D7"
        Public Const EventsId As String = "17C731B8-CE61-4B5F-B114-10F3E46153AC"
    #End Region
    
        ' A creatable COM class must have a Public Sub New() 
        ' without parameters. Otherwise, the class will not be 
        ' registered in the COM registry and cannot be created 
        ' through CreateObject.
        Public Sub New()
            MyBase.New()
        End Sub
    
    End Class
  11. Fügen Sie die folgende Funktion zu "COMClass1" hinzu:
       Public Function myFunction() As Integer
          Return 100
       End Function
  12. Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf den Projektnamen, und klicken Sie dann auf Eigenschaften.
  13. Klicken Sie unter Konfigurationseigenschaften auf Erstellen.
  14. Vergewissern Sie sich, dass das Kontrollkästchen Für COM-Interop registrieren aktiviert ist, und klicken Sie anschließend auf OK.
  15. Klicken Sie im Menü Erstellen auf Projektmappe erstellen, um das Projekt zu erstellen.
  16. Starten Sie Visual Basic 6.0.
  17. Klicken Sie im Menü Datei auf Neues Projekt, und aktivieren Sie anschließend im Dialogfeld Neues Projekt das Kontrollkästchen Standard EXE.

    Ein Formular mit dem Namen "Form1" wird standardmäßig erstellt.
  18. Klicken Sie im Menü Projekt auf Verweise.
  19. Doppelklicken Sie in der Liste Verfügbare Verweise auf TestProj, um das Projekt auszuwählen, und klicken Sie anschließend auf OK.
  20. Fügen Sie eine Befehlsschaltfläche zum Formular hinzu.
  21. Doppelklicken Sie auf Command1, um das Codefenster zu öffnen.
  22. Fügen Sie den folgenden Code zum Ereignis Command1_Click hinzu:
    Dim myObject As TestProj.COMClass1
    Set myObject = New TestProj.COMClass1
    MsgBox myObject.myFunction
  23. Klicken Sie im Menü Ausführen auf Start.
  24. Klicken Sie auf die Befehlsschaltfläche.

    Es müsste eine Meldung mit der Angabe 100 angezeigt werden.

Informationsquellen

Weitere Informationen hierzu finden Sie auf folgender Website von Microsoft:
Interaktion mit nicht verwaltetem Code
http://msdn2.microsoft.com/de-de/library/sd10k43k(VS.80).aspx

Eigenschaften

Artikel-ID: 817248 - Geändert am: Montag, 3. Dezember 2007 - Version: 6.7
Die Informationen in diesem Artikel beziehen sich auf:
  • Microsoft Visual Basic 2005
  • Microsoft Visual Basic .NET 2003 Standard Edition
  • Microsoft Visual Basic .NET 2002 Standard Edition
  • Microsoft Visual Basic 6.0 Enterprise Edition
  • Microsoft Visual Basic 6.0 Learning Edition
  • Microsoft Visual Basic 6.0 Professional Edition
  • Microsoft .NET Framework 2.0
  • Microsoft .NET Framework 1.1
  • Microsoft .NET Framework 1.0
Keywords: 
kbhowtomaster kbinterop kbnamespace kbdll kbautomation kbcominterop kbvs2005applies kbvs2005swept KB817248
Microsoft stellt Ihnen die in der Knowledge Base angebotenen Artikel und Informationen als Service-Leistung zur Verfügung. Microsoft übernimmt keinerlei Gewährleistung dafür, dass die angebotenen Artikel und Informationen auch in Ihrer Einsatzumgebung die erwünschten Ergebnisse erzielen. Die Entscheidung darüber, ob und in welcher Form Sie die angebotenen Artikel und Informationen nutzen, liegt daher allein bei Ihnen. Mit Ausnahme der gesetzlichen Haftung für Vorsatz ist jede Haftung von Microsoft im Zusammenhang mit Ihrer Nutzung dieser Artikel oder Informationen ausgeschlossen.

Ihr Feedback an uns

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com