方法 : Visual C++ コード モデルを使用したコード操作 (Visual Basic)
Visual Studio コード モデルでは、オートメーション クライアントから、プロジェクト内のコード定義を検索したり、見つかったコード要素に変更を加えたりできます。 Visual C++ には、Visual C++ 固有のコードを対象とした、コア コード モデルの拡張機能が用意されています。
たとえば、Language プロパティで、特定のコード要素が Visual C++ コード モデル オブジェクトとして指定され、さらに、Kind = vsCMElementClass の場合、Visual Studio コード モデルの CodeClass2 を使用するか、Visual C++ コード モデルの VCCodeClass を使用するかを選択できます。
Visual C++ に固有のコード モデルを使用して、コードをチェックしたり生成したりする方法を次の手順に示します。
プロジェクトの最初のファイルにコメントを追加するには
Visual Basic で Visual Studio のアドイン プロジェクトを作成します。
[プロジェクト] メニューの [参照の追加] をクリックします。次に、[.NET] タブをクリックして Microsoft.VisualStudio.VCCodeModel を選択し、[OK] をクリックします。
Connect.vb ファイルの先頭に Imports Microsoft.VisualStudio.VCCodeModel を追加します。
OnConnection メソッドのコードを次のコードで置き換えます。
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
アドインをビルドするには、[ビルド] メニューの [ソリューションのビルド] をクリックします。
Visual Studio 統合開発環境 (IDE: Integrated Development Environment) で、Visual C++ プロジェクトを開きます。
[ツール] メニューの [アドイン マネージャー] をクリックし、[アドイン マネージャー] ダイアログ ボックスからアドインを選択します。 [OK] をクリックしてアドインを実行します。
プロジェクトの 1 つ目のファイルで、プログラムによって追加されたコメントをチェックします。
Visual C++ プロジェクトに新しいファイルを追加するには
Visual Basic で Visual Studio のアドイン プロジェクトを作成します。
[プロジェクト] メニューの [参照の追加] をクリックします。次に、[.NET] タブをクリックして Microsoft.VisualStudio.VCCodeModel を選択し、[OK] をクリックします。
Connect.vb ファイルの先頭に Imports Microsoft.VisualStudio.VCCodeModel を追加します。
OnConnection メソッドのコードを次のコードで置き換えます。
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
アドインをビルドするには、[ビルド] メニューの [ソリューションのビルド] をクリックします。
Visual Studio IDE で Visual C++ プロジェクトを開きます。
[ツール] メニューの [アドイン マネージャー] をクリックし、[アドイン マネージャー] ダイアログ ボックスからアドインを選択します。 [OK] をクリックしてアドインを実行します。
注意
MyClass2.h が既に存在する場合はエラーになります。
関数を file.h に追加するには
Visual Basic で Visual Studio のアドイン プロジェクトを作成します。
[プロジェクト] メニューの [参照の追加] をクリックします。次に、[.NET] タブをクリックして Microsoft.VisualStudio.VCCodeModel を選択し、[OK] をクリックします。
Connect.vb ファイルの先頭に Imports Microsoft.VisualStudio.VCCodeModel を追加します。
OnConnection メソッドのコードを次のコードで置き換えます。
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
アドインをビルドするには、[ビルド] メニューの [ソリューションのビルド] をクリックします。
Visual Studio IDE で Visual C++ プロジェクトを開き、file.h を追加します。
[ツール] メニューの [アドイン マネージャー] をクリックし、[アドイン マネージャー] ダイアログ ボックスからアドインを選択します。 [OK] をクリックしてアドインを実行します。
file.h で挿入されたコードをチェックします。
最上位のコード要素を含むファイルを表示するには
Visual Basic で Visual Studio のアドイン プロジェクトを作成します。
[プロジェクト] メニューの [参照の追加] をクリックします。次に、[.NET] タブをクリックして Microsoft.VisualStudio.VCCodeModel を選択し、[OK] をクリックします。
Connect.vb ファイルの先頭に Imports Microsoft.VisualStudio.VCCodeModel を追加します。
OnConnection メソッドのコードを次のコードで置き換えます。
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
アドインをビルドするには、[ビルド] メニューの [ソリューションのビルド] をクリックします。
Visual Studio IDE で Visual C++ プロジェクトを開きます。
[ツール] メニューの [アドイン マネージャー] をクリックし、[アドイン マネージャー] ダイアログ ボックスからアドインを選択します。 [OK] をクリックしてアドインを実行します。
最上位のコード要素を含むファイル名がメッセージ ボックスに表示されます。
最上位のコード要素項目をすべて表示するには
Visual Basic で Visual Studio のアドイン プロジェクトを作成します。
[プロジェクト] メニューの [参照の追加] をクリックします。次に、[.NET] タブをクリックして Microsoft.VisualStudio.VCCodeModel を選択し、[OK] をクリックします。
Connect.vb ファイルの先頭に Imports Microsoft.VisualStudio.VCCodeModel を追加します。
OnConnection メソッドのコードを次のコードで置き換えます。
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
アドインをビルドするには、[ビルド] メニューの [ソリューションのビルド] をクリックします。
Visual Studio IDE で Visual C++ プロジェクトを開きます。
[ツール] メニューの [アドイン マネージャー] をクリックし、[アドイン マネージャー] ダイアログ ボックスからアドインを選択します。 [OK] をクリックしてアドインを実行します。
最上位のコード要素名がメッセージ ボックスに表示されます。