Porady: manipulowanie kodem za pomocą modelu kodu Visual C++ (Visual C#)
W Visual Studio 2013, dodatki są przestarzałe.Zalecamy uaktualnienie dodatków do rozszerzeń VSPackage.Aby uzyskać więcej informacji o uaktualnianiu, zobacz Często zadawane pytania: konwertowanie dodatków na rozszerzenia pakietu VSPackage.
Model kodu Visual Studio oferuje klientom automatyzacji możliwość znalezienia definicji kodów w projekcie i zmodyfikowania tych elementów kodu.Visual C++ oferuje rozszerzenie podstawowego modelu kodu za cel wybierając kod specyficzny dla Visual C++.
Na przykład jeśli właściwość Language wskazuje, że dany element kodu jest obiektu modelu kodu języka Visual C++, a Kind = vsCMElementClass, użytkownik może użyć klasy CodeClass2 z modelu kodu języka Visual Studio lub klasy VCCodeClass z modelu kod języka Visual C++.
Poniższe procedury przedstawiają sposoby badania i generowania kodu za pomocą modelu kodu, który jest specyficzny dla Visual C++.
Aby dodać komentarz do pierwszego pliku w projekcie
Utwórz projekt dodatku Visual Studio w Visual C#.
W menu Projekt kliknij Dodaj odwołanie, kliknij kartę .NET, wybierz Microsoft.VisualStudio.VCCodeModel, a następnie kliknij OK.
Dodaj using Microsoft.VisualStudio.VCCodeModel; na początku pliku Connect.cs.
Zastąp kod w metodzie OnConnection poniższym kodem:
// 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*/" ); }
Aby utworzyć dodatek, kliknij Kompiluj rozwiązanie w menu Kompilacja.
Otwórz projekt w języku Visual C++ w zintegrowanym środowisku projektowym (IDE) programu Visual Studio.
W menu Narzędzia, kliknij Menedżer dodatków, a następnie wybierz swój dodatek z okna dialogowego Menedżer dodatków.Kliknij OK, aby uruchomić dodatek.
Zbadaj pierwszy plik w projekcie pod kątem programowo dodanych komentarzy.
Aby dodać nowy plik do projektu Visual C++
Utwórz projekt dodatku Visual Studio w Visual C#.
W menu Projekt kliknij Dodaj odwołanie, kliknij kartę .NET, wybierz Microsoft.VisualStudio.VCCodeModel, a następnie kliknij OK.
Dodaj using Microsoft.VisualStudio.VCCodeModel; na początku pliku Connect.cs.
Zastąp kod w metodzie OnConnection poniższym kodem:
//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 ) ) ); }
Aby utworzyć dodatek, kliknij Kompiluj rozwiązanie w menu Kompilacja.
Otwórz projekt Visual C++ w IDE Visual Studio.
W menu Narzędzia, kliknij Menedżer dodatkówi wybierz swój dodatek z okna dialogowego Menedżer dodatków.Kliknij OK, aby uruchomić dodatek.
[!UWAGA]
Jeśli plik MyClass2.h już istnieje, kod nie powiedzie się.
Aby dodać funkcję do file.h
Utwórz projekt dodatku Visual Studio w Visual C#.
W menu Projekt kliknij polecenie Dodaj odwołanie, kliknij kartę .NET, zaznacz pozycje Microsoft.VisualStudio.VCCodeModel i System.Windows.Forms, a następnie kliknij przycisk OK.
Dodaj następujące za pomocą instrukcji na górze pliku Connect.cs:
using System.Windows.Forms; using Microsoft.VisualStudio.VCCodeModel;
Zastąp kod w metodzie OnConnection poniższym kodem:
// 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); }
Aby utworzyć dodatek, kliknij Kompiluj rozwiązanie w menu Kompilacja.
Otwórz projekt w języku Visual C++ w środowisku IDE programu Visual Studio i dodaj do niego plik file.h.
W menu Narzędzia, kliknij Menedżer dodatków, a następnie wybierz swój dodatek z okna dialogowego Menedżer dodatków.Kliknij OK, aby uruchomić dodatek.
Sprawdź wstawiony kod w pliku file.h.
Aby wyświetlić pliki, które zawierają elementy kodu najwyższego poziomu
Utwórz projekt dodatku Visual Studio w Visual C#.
W menu Projekt kliknij polecenie Dodaj odwołanie, kliknij kartę .NET, zaznacz pozycje Microsoft.VisualStudio.VCCodeModel i System.Windows.Forms, a następnie kliknij przycisk OK.
Dodaj następujące za pomocą instrukcji na górze pliku Connect.cs:
using System.Windows.Forms; using Microsoft.VisualStudio.VCCodeModel;
Zastąp kod w metodzie OnConnection, poniższym kodem:
// 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)); } }
Aby utworzyć dodatek, kliknij Kompiluj rozwiązanie w menu Kompilacja.
Otwórz projekt Visual C++ w IDE Visual Studio.
W menu Narzędzia, kliknij Menedżer dodatków, a następnie wybierz swój dodatek z okna dialogowego Menedżer dodatków.Kliknij OK, aby uruchomić dodatek.
Okna komunikatów wyświetlają nazwy plików, które zawierają elementy kodu najwyższego poziomu.
Aby wyświetlić wszystkie pozycje elementów najwyższego poziomu kodu
Utwórz projekt dodatku Visual Studio w Visual C#.
W menu Projekt kliknij polecenie Dodaj odwołanie, kliknij kartę .NET, zaznacz pozycje Microsoft.VisualStudio.VCCodeModel i System.Windows.Forms, a następnie kliknij przycisk OK.
Dodaj następujące za pomocą instrukcji na górze pliku Connect.cs:
using System.Windows.Forms; using Microsoft.VisualStudio.VCCodeModel;
Zastąp kod w metodzie OnConnection, poniższym kodem:
// 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); } }
Aby utworzyć dodatek, kliknij Kompiluj rozwiązanie w menu Kompilacja.
Otwórz projekt Visual C++ w IDE Visual Studio.
W menu Narzędzia, kliknij Menedżer dodatków, a następnie wybierz swój dodatek z okna dialogowego Menedżer dodatków.Kliknij OK, aby uruchomić dodatek.
Okna komunikatów wyświetlają nazwy elementów kodu najwyższego poziomu.
Zobacz też
Zadania
Porady: manipulowanie kodem za pomocą modelu kodu Visual C++ (Visual Basic)