Gewusst wie: Bearbeiten von Code mit dem Visual C++-Codemodell (Visual Basic)
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
Erstellen Sie in Visual Basic ein Visual Studio-Add-In-Projekt.
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.
Fügen Sie am Anfang der Datei Connect.vb Imports Microsoft.VisualStudio.VCCodeModel ein.
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
Um das Add-In zu erstellen, klicken Sie im Menü Erstellen auf Projektmappe erstellen.
Öffnen Sie in der integrierten Entwicklungsumgebung (Integrated Development Environment, IDE) von Visual Studio ein Visual C++-Projekt.
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.
Ü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
Erstellen Sie in Visual Basic ein Visual Studio-Add-In-Projekt.
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.
Fügen Sie am Anfang der Datei Connect.vb Imports Microsoft.VisualStudio.VCCodeModel ein.
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
Um das Add-In zu erstellen, klicken Sie im Menü Erstellen auf Projektmappe erstellen.
Öffnen Sie in der Visual Studio-IDE ein Visual C++-Projekt.
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.
Tipp
Wenn MyClass2.h bereits vorhanden ist, wird der Code nicht erfolgreich ausgeführt.
So fügen Sie file.h eine Funktion hinzu
Erstellen Sie in Visual Basic ein Visual Studio-Add-In-Projekt.
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.
Fügen Sie am Anfang der Datei Connect.vb Imports Microsoft.VisualStudio.VCCodeModel ein.
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
Um das Add-In zu erstellen, klicken Sie im Menü Erstellen auf Projektmappe erstellen.
Öffnen Sie in der Visual Studio-IDE ein Visual C++-Projekt, und fügen Sie ihm die Datei file.h hinzu.
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.
Überprüfen Sie den eingefügten Code in file.h.
So zeigen Sie Dateien an, die Codeelemente der obersten Ebene enthalten
Erstellen Sie in Visual Basic ein Visual Studio-Add-In-Projekt.
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.
Fügen Sie am Anfang der Datei Connect.vb Imports Microsoft.VisualStudio.VCCodeModel ein.
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
Um das Add-In zu erstellen, klicken Sie im Menü Erstellen auf Projektmappe erstellen.
Öffnen Sie in der Visual Studio-IDE ein Visual C++-Projekt.
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
Erstellen Sie in Visual Basic ein Visual Studio-Add-In-Projekt.
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.
Fügen Sie am Anfang der Datei Connect.vb Imports Microsoft.VisualStudio.VCCodeModel ein.
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
Um das Add-In zu erstellen, klicken Sie im Menü Erstellen auf Projektmappe erstellen.
Öffnen Sie in der Visual Studio-IDE ein Visual C++-Projekt.
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.