Freigeben über


Gewusst wie: Bearbeiten von Code mit dem Visual C++-Codemodell (Visual Basic)

Add-Ins sind seit Visual Studio 2013 veraltet. Es wird empfohlen, für Ihre Add-Ins ein Upgrade auf VSPackage-Erweiterungen durchführen. Weitere Informationen zum Durchführen eines Upgrades finden Sie unter FAQ: Konvertieren von Add-Ins in VSPackage-Erweiterungen.

Durch das Codemodell von Visual Studio können Automatisierungsclients Codedefinitionen in einem Projekt finden und diese Codeelemente ändern. Visual C++ stellt eine Erweiterung für das Hauptcodemodell zur Verwendung von Visual C++-spezifischem Code bereit.

Wenn die Language-Eigenschaft beispielsweise angibt, dass es sich bei einem bestimmten Codeelement um ein Visual C++-Codemodellobjekt handelt und Kind = vsCMElementClass ist, können Sie wählen, ob Sie CodeClass2 vom Visual Studio-Codemodell aus oder VCCodeClass vom Visual C++-Codemodell aus verwenden möchten.

Anhand der folgenden Verfahren wird veranschaulicht, wie Sie Code unter Verwendung des Visual C++-spezifischen Codemodells untersuchen und generieren.

So fügen Sie der ersten Datei im Projekt einen Kommentar hinzu

  1. Erstellen Sie in Visual Basic ein Visual Studio-Add-In-Projekt.

  2. Klicken Sie im Menü Projekt auf Verweis hinzufügen, klicken Sie auf die Registerkarte .NET, wählen Sie Microsoft.VisualStudio.VCCodeModel aus, und klicken Sie auf OK.

  3. Fügen Sie am Anfang der Datei Connect.vb Imports Microsoft.VisualStudio.VCCodeModel ein.

  4. Ersetzen Sie den Code in der OnConnection-Methode durch den folgenden Code:

    Imports Microsoft.VisualStudio.VCCodeModel
    Public Sub OnConnection(ByVal application As Object, ByVal  _
      connectMode As ext_ConnectMode, ByVal addInInst As Object, _
      ByRef custom As Array) Implements IDTExtensibility2.OnConnection
        _applicationObject = CType(application, DTE2)
        _addInInstance = CType(addInInst, AddIn)
        test(_applicationObject)
    End Sub
    
    Sub test(ByVal dte As DTE2)
        Dim vcCM As VCCodeModel
        Dim vcCodeElement As VCCodeElement
        vcCM = CType(dte.Solution.Item(1).CodeModel, VCCodeModel)
        vcCodeElement = CType(vcCM.CodeElements.Item(1), _
          VCCodeElement)
        AddCommentAtStart(vcCodeElement)
        AddCommentAtEnd(vcCodeElement)
    End Sub
    
    ' Project Property
    ' StartPointOf Property
    ' Adds a comment before the VCCodeElement declaration.
    Sub AddCommentAtStart(ByVal vcCodeElement As VCCodeElement)
        Dim textPoint As TextPoint
        textPoint = vcCodeElement.StartPointOf(vsCMPart.vsCMPartWhole)
        textPoint.CreateEditPoint().Insert("/*This is a Start_ Comment*/")
    End Sub
    
    Sub AddCommentAtEnd(ByVal vcCodeElement As VCCodeElement)
        Dim textPoint As TextPoint
        textPoint = vcCodeElement.EndPointOf(vsCMPart.vsCMPartWhole)
        textPoint.CreateEditPoint().Insert("/*End Comment*/")
    End Sub
    
  5. Um das Add-In zu erstellen, klicken Sie im Menü Erstellen auf Projektmappe erstellen.

  6. Öffnen Sie in der integrierten Entwicklungsumgebung (Integrated Development Environment, IDE) von Visual Studio ein Visual C++-Projekt.

  7. Klicken Sie im Menü Extras auf Add-In-Manager, und wählen Sie im Dialogfeld Add-In-Manager das Add-In aus. Klicken Sie auf OK, um das Add-In auszuführen.

  8. Überprüfen Sie die erste Datei im Projekt auf die programmgesteuert hinzugefügten Kommentare.

So fügen Sie einem Visual C++-Projekt eine neue Datei hinzu

  1. Erstellen Sie in Visual Basic ein Visual Studio-Add-In-Projekt.

  2. Klicken Sie im Menü Projekt auf Verweis hinzufügen, klicken Sie auf die Registerkarte .NET, wählen Sie Microsoft.VisualStudio.VCCodeModel aus, und klicken Sie auf OK.

  3. Fügen Sie am Anfang der Datei Connect.vb Imports Microsoft.VisualStudio.VCCodeModel ein.

  4. Ersetzen Sie den Code in der OnConnection-Methode durch den folgenden Code:

    Imports Microsoft.VisualStudio.VCCodeModel
    Public Sub OnConnection(ByVal application As Object, ByVal _
      connectMode As ext_ConnectMode, ByVal addInInst As Object,  _
      ByRef custom As Array) Implements IDTExtensibility2.OnConnection
        _applicationObject = CType(application, DTE2)
        _addInInstance = CType(addInInst, AddIn)
        GetVCCodeElement(_applicationObject)
    End Sub
    
    ' Shows how to get a VCCodeElement.
    Sub GetVCCodeElement(ByVal dte As DTE2)
        Dim vcCM As VCCodeModel
        Dim vcCodeElement As VCCodeElement
        vcCM = CType(dte.Solution.Item(1).CodeModel, VCCodeModel)
        vcCodeElement = CType(vcCM.AddClass("MyClass2", "MyClass2.h"), _
          VCCodeElement)
    End Sub
    
  5. Um das Add-In zu erstellen, klicken Sie im Menü Erstellen auf Projektmappe erstellen.

  6. Öffnen Sie in der Visual Studio-IDE ein Visual C++-Projekt.

  7. Klicken Sie im Menü Extras auf Add-In-Manager, und wählen Sie im Dialogfeld Add-In-Manager das Add-In aus. Klicken Sie auf OK, um das Add-In auszuführen.

    Hinweis

    Wenn MyClass2.h bereits vorhanden ist, wird der Code nicht erfolgreich ausgeführt.

So fügen Sie file.h eine Funktion hinzu

  1. Erstellen Sie in Visual Basic ein Visual Studio-Add-In-Projekt.

  2. Klicken Sie im Menü Projekt auf Verweis hinzufügen, klicken Sie auf die Registerkarte .NET, wählen Sie Microsoft.VisualStudio.VCCodeModel aus, und klicken Sie auf OK.

  3. Fügen Sie am Anfang der Datei Connect.vb Imports Microsoft.VisualStudio.VCCodeModel ein.

  4. Ersetzen Sie den Code in der OnConnection-Methode durch den folgenden Code:

    Imports Microsoft.VisualStudio.VCCodeModel
    Public Sub OnConnection(ByVal application As Object, ByVal _
      connectMode As ext_ConnectMode, ByVal addInInst As Object, _
      ByRef custom As Array) Implements IDTExtensibility2.OnConnection
        _applicationObject = CType(application, DTE2)
        _addInInstance = CType(addInInst, AddIn)
        DisplayName(_applicationObject)
    End Sub
    
    ' DisplayName
    ' Shows the DisplayName of a function which includes the parameter 
    ' names.
    Sub DisplayName(ByVal dte As DTE2)
        Dim vcCM As VCCodeModel
        Dim vcCodeElement As VCCodeElement
        vcCM = CType(dte.Solution.Item(1).CodeModel, VCCodeModel)
        vcCodeElement = CType(vcCM.AddFunction("MyFunction", "File.h", _
          vsCMFunction.vsCMFunctionFunction, "void"), VCCodeElement)
        MsgBox(vcCodeElement.DisplayName)
    End Sub
    
  5. Um das Add-In zu erstellen, klicken Sie im Menü Erstellen auf Projektmappe erstellen.

  6. Öffnen Sie in der Visual Studio-IDE ein Visual C++-Projekt, und fügen Sie ihm die Datei file.h hinzu.

  7. Klicken Sie im Menü Extras auf Add-In-Manager, und wählen Sie im Dialogfeld Add-In-Manager das Add-In aus. Klicken Sie auf OK, um das Add-In auszuführen.

  8. Überprüfen Sie den eingefügten Code in file.h.

So zeigen Sie Dateien an, die Codeelemente der obersten Ebene enthalten

  1. Erstellen Sie in Visual Basic ein Visual Studio-Add-In-Projekt.

  2. Klicken Sie im Menü Projekt auf Verweis hinzufügen, klicken Sie auf die Registerkarte .NET, wählen Sie Microsoft.VisualStudio.VCCodeModel aus, und klicken Sie auf OK.

  3. Fügen Sie am Anfang der Datei Connect.vb Imports Microsoft.VisualStudio.VCCodeModel ein.

  4. Ersetzen Sie den Code in der OnConnection-Methode durch den folgenden Code:

    Imports Microsoft.VisualStudio.VCCodeModel
    Public Sub OnConnection(ByVal application As Object, ByVal _
      connectMode As ext_ConnectMode, ByVal addInInst As Object, _
      ByRef custom As Array) Implements IDTExtensibility2.OnConnection
        _applicationObject = CType(application, DTE2)
        _addInInstance = CType(addInInst, AddIn)
        DisplayLocation(_applicationObject)
    End Sub
    
    Sub DisplayLocation(ByVal dte As DTE2)
        Dim vcCM As VCCodeModel
        Dim vcCodeElement As VCCodeElement
        vcCM = CType(dte.Solution.Item(1).CodeModel, VCCodeModel)
        For Each vcCodeElement In vcCM.CodeElements
            MsgBox(vcCodeElement.Name + " is declared in " _
              & vcCodeElement.Location)
        Next
    End Sub
    
  5. Um das Add-In zu erstellen, klicken Sie im Menü Erstellen auf Projektmappe erstellen.

  6. Öffnen Sie in der Visual Studio-IDE ein Visual C++-Projekt.

  7. Klicken Sie im Menü Extras auf Add-In-Manager, und wählen Sie im Dialogfeld Add-In-Manager das Add-In aus. Klicken Sie auf OK, um das Add-In auszuführen.

    In Meldungsfeldern werden die Namen von Dateien angezeigt, die Codeelemente der obersten Ebene enthalten.

So zeigen Sie alle Codeelemente der obersten Ebene an

  1. Erstellen Sie in Visual Basic ein Visual Studio-Add-In-Projekt.

  2. Klicken Sie im Menü Projekt auf Verweis hinzufügen, klicken Sie auf die Registerkarte .NET, wählen Sie Microsoft.VisualStudio.VCCodeModel aus, und klicken Sie auf OK.

  3. Fügen Sie am Anfang der Datei Connect.vb Imports Microsoft.VisualStudio.VCCodeModel ein.

  4. Ersetzen Sie den Code in der OnConnection-Methode durch den folgenden Code:

    Imports Microsoft.VisualStudio.VCCodeModel
    Public Sub OnConnection(ByVal application As Object, ByVal _
     connectMode As Extensibility.ext_ConnectMode, ByVal addInInst _
     As Object, ByRef custom As System.Array) Implements _
     Extensibility.IDTExtensibility2.OnConnection
    
        _applicationObject = CType(application, DTE2)
        _addInInstance = CType(addInInst, AddIn)
        FindItem(_applicationObject)
    End Sub
    
    Sub FindItem(ByVal dte As DTE2)
        Dim vcCM As VCCodeModel
        Dim vcCodeElements As VCCodeElements
        vcCM = CType(dte.Solution.Item(1).CodeModel, VCCodeModel)
        vcCodeElements = CType(vcCM.CodeElements, VCCodeElements)
        Dim i As Integer
        For i = 1 To vcCodeElements.Count
            MsgBox(vcCodeElements.Item(i).Name)
        Next
    End Sub
    
  5. Um das Add-In zu erstellen, klicken Sie im Menü Erstellen auf Projektmappe erstellen.

  6. Öffnen Sie in der Visual Studio-IDE ein Visual C++-Projekt.

  7. Klicken Sie im Menü Extras auf Add-In-Manager, und wählen Sie im Dialogfeld Add-In-Manager das Add-In aus. Klicken Sie auf OK, um das Add-In auszuführen.

    In Meldungsfeldern werden die Namen von Codeelementen der obersten Ebene angezeigt.

Siehe auch

Konzepte

Visual C++-Codemodell

Ermitteln von Code über das Codemodell (Visual Basic)

Ermitteln von Code über das Codemodell (Visual C#)