如何:使用 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++ 的代码模型检查和生成代码。

将注释添加到项目中的第一个文件

  1. 在 Visual Basic 中创建一个 Visual Studio 外接程序项目。

  2. 在“项目”菜单上,单击“添加引用”,然后单击“.NET”选项卡,选择 Microsoft.VisualStudio.VCCodeModel,然后单击“确定”。

  3. 将 Imports Microsoft.VisualStudio.VCCodeModel 添加到 Connect.vb 文件顶部。

  4. 将 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
    
  5. 若要生成外接程序,请在“生成”菜单上单击“生成解决方案”。

  6. 在 Visual Studio 集成开发环境 (IDE) 中打开一个 Visual C++ 项目。

  7. 在“工具”菜单上,单击“外接程序管理器”,从“外接程序管理器”对话框中选择您的外接程序。单击“确定”以运行您的外接程序。

  8. 检查项目中的第一个文件,查看以编程方式添加的注释。

将新的文件添加到 Visual C++ 项目中

  1. 在 Visual Basic 中创建一个 Visual Studio 外接程序项目。

  2. 在“项目”菜单上,单击“添加引用”,然后单击“.NET”选项卡,选择 Microsoft.VisualStudio.VCCodeModel,然后单击“确定”。

  3. 将 Imports Microsoft.VisualStudio.VCCodeModel 添加到 Connect.vb 文件顶部。

  4. 将 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
    
  5. 若要生成外接程序,请在“生成”菜单上单击“生成解决方案”。

  6. 在 Visual Studio IDE 中打开一个 Visual C++ 项目。

  7. 在“工具”菜单上,单击“外接程序管理器”,从“外接程序管理器”对话框中选择您的外接程序。单击“确定”以运行您的外接程序。

    ms228757.alert_note(zh-cn,VS.90).gif说明:

    如果 MyClass2.h 已存在,则代码运行失败。

将函数添加到 file.h

  1. 在 Visual Basic 中创建一个 Visual Studio 外接程序项目。

  2. 在“项目”菜单上,单击“添加引用”,然后单击“.NET”选项卡,选择 Microsoft.VisualStudio.VCCodeModel,然后单击“确定”。

  3. 将 Imports Microsoft.VisualStudio.VCCodeModel 添加到 Connect.vb 文件顶部。

  4. 将 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
    
  5. 若要生成外接程序,请在“生成”菜单上单击“生成解决方案”。

  6. 在 Visual Studio IDE 中打开一个 Visual C++ 项目并向它添加一个 file.h。

  7. 在“工具”菜单上,单击“外接程序管理器”,然后从“外接程序管理器”对话框中选择您的外接程序。单击“确定”以运行您的外接程序。

  8. 检查 file.h 中的插入代码。

显示包含顶级代码元素的文件

  1. 在 Visual Basic 中创建一个 Visual Studio 外接程序项目。

  2. 在“项目”菜单上,单击“添加引用”,然后单击“.NET”选项卡,选择 Microsoft.VisualStudio.VCCodeModel,然后单击“确定”。

  3. 将 Imports Microsoft.VisualStudio.VCCodeModel 添加到 Connect.vb 文件顶部。

  4. 将 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
    
  5. 若要生成外接程序,请在“生成”菜单上单击“生成解决方案”。

  6. 在 Visual Studio IDE 中打开一个 Visual C++ 项目。

  7. 在“工具”菜单上,单击“外接程序管理器”,然后从“外接程序管理器”对话框中选择您的外接程序。单击“确定”以运行您的外接程序。

    消息框显示包含顶级代码元素的文件名。

显示所有的顶级代码元素项

  1. 在 Visual Basic 中创建一个 Visual Studio 外接程序项目。

  2. 在“项目”菜单上,单击“添加引用”,然后单击“.NET”选项卡,选择 Microsoft.VisualStudio.VCCodeModel,然后单击“确定”。

  3. 将 Imports Microsoft.VisualStudio.VCCodeModel 添加到 Connect.vb 文件顶部。

  4. 将 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
    
  5. 若要生成外接程序,请在“生成”菜单上单击“生成解决方案”。

  6. 在 Visual Studio IDE 中打开一个 Visual C++ 项目。

  7. 在“工具”菜单上,单击“外接程序管理器”,然后从“外接程序管理器”对话框中选择您的外接程序。单击“确定”以运行您的外接程序。

    消息框显示顶级代码元素名称。

请参见

概念

Visual C++ 代码模型

使用代码模型查找代码 (Visual Basic)

使用代码模型查找代码 (Visual C#)