如何:使用 Visual C++ 代码模型操作代码 (Visual Basic)
更新:2007 年 11 月
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,然后单击“确定”。
将 Imports Microsoft.VisualStudio.VCCodeModel 添加到 Connect.vb 文件顶部。
将 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) 中打开一个 Visual C++ 项目。
在“工具”菜单上,单击“外接程序管理器”,从“外接程序管理器”对话框中选择您的外接程序。单击“确定”以运行您的外接程序。
检查项目中的第一个文件,查看以编程方式添加的注释。
将新的文件添加到 Visual C++ 项目中
在 Visual Basic 中创建一个 Visual Studio 外接程序项目。
在“项目”菜单上,单击“添加引用”,然后单击“.NET”选项卡,选择 Microsoft.VisualStudio.VCCodeModel,然后单击“确定”。
将 Imports Microsoft.VisualStudio.VCCodeModel 添加到 Connect.vb 文件顶部。
将 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++ 项目。
在“工具”菜单上,单击“外接程序管理器”,从“外接程序管理器”对话框中选择您的外接程序。单击“确定”以运行您的外接程序。
说明: 如果 MyClass2.h 已存在,则代码运行失败。
将函数添加到 file.h
在 Visual Basic 中创建一个 Visual Studio 外接程序项目。
在“项目”菜单上,单击“添加引用”,然后单击“.NET”选项卡,选择 Microsoft.VisualStudio.VCCodeModel,然后单击“确定”。
将 Imports Microsoft.VisualStudio.VCCodeModel 添加到 Connect.vb 文件顶部。
将 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。
在“工具”菜单上,单击“外接程序管理器”,然后从“外接程序管理器”对话框中选择您的外接程序。单击“确定”以运行您的外接程序。
检查 file.h 中的插入代码。
显示包含顶级代码元素的文件
在 Visual Basic 中创建一个 Visual Studio 外接程序项目。
在“项目”菜单上,单击“添加引用”,然后单击“.NET”选项卡,选择 Microsoft.VisualStudio.VCCodeModel,然后单击“确定”。
将 Imports Microsoft.VisualStudio.VCCodeModel 添加到 Connect.vb 文件顶部。
将 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++ 项目。
在“工具”菜单上,单击“外接程序管理器”,然后从“外接程序管理器”对话框中选择您的外接程序。单击“确定”以运行您的外接程序。
消息框显示包含顶级代码元素的文件名。
显示所有的顶级代码元素项
在 Visual Basic 中创建一个 Visual Studio 外接程序项目。
在“项目”菜单上,单击“添加引用”,然后单击“.NET”选项卡,选择 Microsoft.VisualStudio.VCCodeModel,然后单击“确定”。
将 Imports Microsoft.VisualStudio.VCCodeModel 添加到 Connect.vb 文件顶部。
将 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++ 项目。
在“工具”菜单上,单击“外接程序管理器”,然后从“外接程序管理器”对话框中选择您的外接程序。单击“确定”以运行您的外接程序。
消息框显示顶级代码元素名称。