Gewusst wie: Bearbeiten von Code mit dem Visual C++-Codemodell (Visual C#)
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 C# 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.cs using Microsoft.VisualStudio.VCCodeModel; ein.
Ersetzen Sie den Code in der OnConnection-Methode durch den folgenden Code:
// Add-in code. using Microsoft.VisualStudio.VCCodeModel; public void OnConnection(object application, Extensibility.ext_ConnectMode connectMode, object addInInst, ref System.Array custom) { _applicationObject = (DTE2)application; )addInInstance = (AddIn)addInInst; // Pass the applicationObject member variable to the code example. test((DTE2)_applicationObject); } public void test( DTE2 dte ) { VCCodeModel vcCM = null; VCCodeElement vcCodeElement = null; vcCM = ( ( VCCodeModel )( dte.Solution.Item( 1 ).CodeModel ) ); vcCodeElement = ( ( VCCodeElement ) ( vcCM.CodeElements.Item(1))); AddCommentAtStart( vcCodeElement ); AddCommentAtEnd( vcCodeElement ); } public void AddCommentAtStart( Microsoft.VisualStudio.VCCodeModel.VCCodeElement vcCodeElement ) { TextPoint textPoint = null; textPoint = vcCodeElement.get_StartPointOf( vsCMPart.vsCMPartWhole, 0 ); textPoint.CreateEditPoint().Insert("/*This is a Start Comment*/"); } public void AddCommentAtEnd( Microsoft.VisualStudio.VCCodeModel.VCCodeElement vcCodeElement ) { TextPoint textPoint = null; textPoint = vcCodeElement.get_EndPointOf( vsCMPart.vsCMPartWhole, 0 ); textPoint.CreateEditPoint().Insert( "/*End Comment*/" ); }
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 C# 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.cs using Microsoft.VisualStudio.VCCodeModel; ein.
Ersetzen Sie den Code in der OnConnection-Methode durch den folgenden Code:
//Add-in code. using Microsoft.VisualStudio.VCCodeModel; public void OnConnection(object application, Extensibility.ext_ConnectMode connectMode, object addInInst, ref System.Array custom) { _applicationObject = (DTE2)application; _addInInstance = (AddIn)addInInst; // Pass the applicationObject member variable to the code example. GetVCCodeElement((DTE2)_applicationObject); } // Shows how to get a VCCodeElement. public void GetVCCodeElement( DTE2 dte ) { VCCodeModel vcCM = null; VCCodeElement vcCodeElement = null; vcCM = ( ( Microsoft.VisualStudio.VCCodeModel.VCCodeModel )( dte.Solution.Item( 1 ).CodeModel ) ); vcCodeElement = ( ( Microsoft.VisualStudio.VCCodeModel.VCCodeElement )( vcCM.AddClass( "MyClass2", "MyClass2.h",0,null, null, EnvDTE.vsCMAccess.vsCMAccessDefault ) ) ); }
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 C# 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 und System.Windows.Forms aus, und klicken Sie dann auf OK.
Fügen Sie am Anfang der Datei Connect.cs die folgenden using-Anweisungen hinzu:
using System.Windows.Forms; using Microsoft.VisualStudio.VCCodeModel;
Ersetzen Sie den Code in der OnConnection-Methode durch den folgenden Code:
// Add-in code. using Microsoft.VisualStudio.VCCodeModel; using System.Windows.Forms; public void OnConnection(object application, Extensibility.ext_ConnectMode connectMode, object addInInst, ref System.Array custom) { _applicationObject = (DTE2)application; _addInInstance = (AddIn)addInInst; // Pass the applicationObject member variable to the code example. DisplayName((DTE2)_applicationObject); } // DisplayName // Shows the DisplayName of a function which includes the parameter // names. public void DisplayName( DTE2 dte ) { VCCodeModel vcCM = null; VCCodeElement vcCodeElement = null; vcCM = ( ( Microsoft.VisualStudio.VCCodeModel.VCCodeModel )( dte.Solution.Item( 1 ).CodeModel ) ); vcCodeElement = ( ( Microsoft.VisualStudio.VCCodeModel.VCCodeElement ) ( vcCM.AddFunction( "MyFunction", "File.h", vsCMFunction.vsCMFunctionFunction, "void", null, EnvDTE.vsCMAccess.vsCMAccessDefault ) ) ); MessageBox.Show( vcCodeElement.DisplayName); }
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 C# 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 und System.Windows.Forms aus, und klicken Sie dann auf OK.
Fügen Sie am Anfang der Datei Connect.cs die folgenden using-Anweisungen hinzu:
using System.Windows.Forms; using Microsoft.VisualStudio.VCCodeModel;
Ersetzen Sie den Code in der OnConnection-Methode durch den folgenden Code:
// Add-in code. using Microsoft.VisualStudio.VCCodeModel; using System.Windows.Forms; public void OnConnection(object application, Extensibility.ext_ConnectMode connectMode, object addInInst, ref System.Array custom) { _applicationObject = (DTE2)application; _addInInstance = (AddIn)addInInst; // Pass the applicationObject member variable to the code example. DisplayLocation((DTE2)_applicationObject); } public void DisplayLocation( DTE2 dte ) { VCCodeModel vcCM = null; VCCodeElement vcCodeElement = null; vcCM = ( ( Microsoft.VisualStudio.VCCodeModel.VCCodeModel )( dte.Solution.Item( 1 ).CodeModel ) ); foreach ( Microsoft.VisualStudio.VCCodeModel.VCCodeElement temp in vcCM.CodeElements ) { vcCodeElement = temp; MessageBox.Show( vcCodeElement.Name + " is declared in " + vcCodeElement.get_Location(vsCMWhere.vsCMWhereDefault)); } }
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 C# 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 und System.Windows.Forms aus, und klicken Sie dann auf OK.
Fügen Sie am Anfang der Datei Connect.cs die folgenden using-Anweisungen hinzu:
using System.Windows.Forms; using Microsoft.VisualStudio.VCCodeModel;
Ersetzen Sie den Code in der OnConnection-Methode durch den folgenden Code:
// Add-in code. using Microsoft.VisualStudio.VCCodeModel; using System.Windows.Forms; public void OnConnection(object application, Extensibility.ext_ConnectMode connectMode, object addInInst, ref System.Array custom) { _applicationObject = (DTE2)application; _addInInstance = (AddIn)addInInst; // Pass the applicationObject member variable to the code example. FindItem((DTE2)_applicationObject); } public void FindItem( DTE2 dte ) { VCCodeModel vcCM = null; VCCodeElements vcCodeElements = null; vcCM = ( ( Microsoft.VisualStudio.VCCodeModel.VCCodeModel )( dte.Solution.Item( 1 ).CodeModel ) ); vcCodeElements = ( ( Microsoft.VisualStudio.VCCodeModel.VCCodeElements ) ( vcCM.CodeElements ) ); int i = 0; for ( i=1; i<=vcCodeElements.Count; i++ ) { MessageBox.Show( vcCodeElements.Item( i ).Name); } }
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.
Siehe auch
Aufgaben
Gewusst wie: Bearbeiten von Code mit dem Visual C++-Codemodell (Visual Basic)