宏项目对象模型

Visual Studio 包括用于编写和记录宏的工具。 (有关概述,请参见使用宏自动执行重复性操作。)Visual Studio 还包括公开宏项目的可编程对象模型。 此模型包含两个常规扩展性对象,分别用于非特定语言项目项和特定于宏的对象。 VSLangProjVSLangProj2VSLangProj80 命名空间中的特定于宏的对象的用法与在 Visual Basic 和 Visual C# 项目中的用法相同。 本主题讨论:

有关 VSLangProjVSLangProj2VSLangProj80 对象的更多信息,请参见 项目扩展性介绍。 有关常规扩展性的更多信息,请参见 扩展 Visual Studio 环境

访问宏项目的扩展性对象

通过 DTE2 扩展性对象的 MacrosIDE 属性访问宏项目。 MacrosIDE 属性返回 DTE2 类型的对象,使您具有对宏集成开发环境 (IDE) 的访问权限,包括解决方案、项目、工具窗口、文档和事件。 下面的宏列出了宏项目中的所有模块。

' Macro editor
Public Sub FindMacros()
   Dim macroproject As Project
   ' Retrieve the first project in the Macros IDE.
   macroproject = DTE.MacrosIDE.Solution.Projects.Item(1)
   ' Display the project's name.
   MsgBox(macroproject.Name)
   ' Display each project item (module).
   Dim projitem As ProjectItem
   For Each projitem In macroproject.ProjectItems
      MsgBox(projitem.Name)
   Next
End Sub 

宏项目和 VSLangProj 对象

在常规扩展性模型中,项目由泛型 Project 对象表示。 Project 对象有个 Object 属性。 在宏项目中,Object 属性返回 VSProject 类型的对象。 由于 Object 属性的类型是 Object,因此必须将引用强制转换为 VSProject 类型。 在进行此强制转换前,可以使用 PrjKindPrjKind2 枚举检查项目类型。 如果在一个宏中执行,该强制转换可能看起来类似于下面这样:

' Macro editor
Public Sub CastToVSProject()
   ' Retrieve the general extensibility object.
   Dim macroproject As Project
   macroproject = DTE.MacrosIDE.Solution.Projects.Item(1)

   ' Cast for the macro specific information.
   Dim vsproj As VSLangProj.VSProject

   ' Can test type of project before cast.
   If (macroproject.Kind = VSLangProj.PrjKind.prjKindVSAProject) Then
      vsproj = CType(macroproject.Object, VSLangProj.VSProject)
   End If
   MsgBox(vsproj.Project.Name)
End Sub

VSProject2 对象是 VSLangProjVSLangProj2VSLangProj80 命名空间中其他几个对象的容器,这些对象包括:ReferencesReferenceImportsBuildManager 对象。

在常规扩展性模型中,项目项由一般 ProjectItem 对象表示。 ProjectItem 对象有个 Object 属性。 在宏项目中,Object 属性返回 VSProjectItem 类型的对象。 由于 Object 属性的类型是 Object,因此必须将引用强制转换为 VSProjectItem 类型。 如果在一个宏中执行,该强制转换可能看起来类似于下面这样:

' Macro editor
Public Sub CastToVSProjectItem()
   Dim projitem As ProjectItem
   Dim vsitem As VSLangProj.VSProjectItem
   For Each projitem In _
      DTE.MacrosIDE.Solution.Projects.Item(1).ProjectItems
      vsitem = CType(projitem.Object, VSLangProj.VSProjectItem)
      MsgBox(vsitem.ProjectItem.Name)
   Next
End Sub

VSLangProj 对象的特定于宏的元素

VSLangProjVSLangProj2VSLangProj80 命名空间中的对象用于 Visual Basic、Visual C# 和宏项目。 有一些特定于宏项目的枚举值。 PrjKind 枚举有一个用于宏项目的值:prjKindVSAProjectPrjBrowseObjectCATID 枚举的下列值用于在“属性”窗口中扩展项:

prjCATIDVSAFolderBrowseObject

prjCATIDVSAFileBrowseObject

prjCATIDVSAConfig

prjCATIDVSAReferenceBrowseObject

VSLangProj 对象的特定于宏的行为

VSLangProjVSLangProj2VSLangProj80 对象的行为在 Visual Basic、Visual C# 和宏项目中略有不同。 这是为了便于对象精确表示项目类型。 对象的许多属性和方法不受宏项目支持,如下所示。

VSProject   此对象表示项目的特定于宏的细节。

  • BuildManager 此属性不受支持,并且访问此属性会引发异常。

  • CopyProject 此方法不受支持,并且调用此方法会引发异常。

  • WorkOffline 此属性始终返回 False。 虽然尝试设置此属性并不会引发异常,但是不能将该属性设置为 True。

VSProjectItem   此对象表示项目项的特定于宏的细节。

  • RunCustomTool 此方法不受支持,并且调用此方法会引发异常。

ProjectProperties3   这些属性描述 Visual Basic、Visual C# 和宏项目。 以下属性不受支持:

ActiveFileSharePath

FullPath

ApplicationIcon

LinkRepair

AssemblyName

OfflineURL

AssemblyKeyContainerName

OutputFileName

AssemblyOriginatorKeyFile

OutputType

AssemblyOriginatorKeyMode

URL

DefaultClientScript

WebAccessMethod

DefaultHTMLPageLayout

WebServer

DefaultTargetSchema

WebServerVersion

ActiveFileSharePath

 

FileProperties2   这些属性描述 Visual Basic、Visual C# 和宏项目项。 以下文件属性不受支持,并且访问这些属性将引发错误:

Author

FullPath

BuildAction

IsDependentFile

IsCustomToolOutput

IsDesignTimeBuildInput

CustomToolNamespace

IsLink

CustomToolOutput

HTMLTitle

DateCreated

LocalPath

DateModified

ModifiedBy

Extension

SubType

FileName

URL

以下 FolderProperties2 不受支持,并且访问这些属性将引发错误。

FullPath

URL

LocalPath

 

ProjectConfigurationProperties3   这些属性描述 Visual Basic、Visual C# 和宏部署配置。 以下文件属性不受支持,并且访问这些属性将引发错误:

AllowUnsafeBlocks

IntermediatePath

BaseAddress

OutputPath

CheckForOverflowUnderflow

StartAction

DocumentationFile

StartArguments

EnableASPXDebugging

StartProgram

EnableUnmanagedDebugging

StartURL

IncrementalBuild

StartWithIE

Reference3   此对象表示一个项目引用。 以下属性不受支持,访问此属性将引发异常:

References   此对象表示宏项目中所有引用的集合。 以下方法不受支持,调用这些方法之一将引发异常:

AddActiveX

AddProject

请参见

参考

MacrosIDE

VSProject

Imports

VSProjectItem

BuildManager

VSProject2

Reference3

概念

项目扩展性介绍