Поделиться через


Модель объектов проекта макроса

Обновлен: Ноябрь 2007

Visual Studio включает инструменты для написания и записи макросов. (Общие сведения см. в разделе Автоматизация повторяющихся действий с помощью макросов). В Visual Studio также имеется программируемая модель объектов, предоставляющая макропроекты. Эта модель содержит как объекты общего назначения для элементов проекта, не зависящих от языка, так и объекты для макросов. Объекты для макросов, представленные в пространствах имен VSLangProj, VSLangProj2, и VSLangProj80 используются точно как в проектах Visual Basic, Visual C# и Visual J#. В данном разделе обсуждаются следующие темы.

Дополнительные сведения об объектах VSLangProj, VSLangProj2, и VSLangProj80 см. в разделе Введение в технологию расширения проектов. Дополнительные сведения об общих вопросах расширяемости см. в разделе Расширение среды Visual Studio.

Доступ к объектам расширяемости макропроекта

Доступ к макропроектам осуществляется с помощью свойства MacrosIDE объекта DTE2. Свойство 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. Перед этим можно установить тип проекта с помощью перечисления PrjKind или PrjKind2. При выполнении в макросе приведение к типу выглядит следующим образом.

' 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 — это контейнер для нескольких других объектов в пространствах имен VSLangProj, VSLangProj2 и VSLangProj80, включая объекты References, Reference, Imports и BuildManager.

В общей модели расширения элементам проектов соответствует универсальный объект 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 для макросов

Объекты в пространствах имен VSLangProj, VSLangProj2, и VSLangProj80 используются для проектов Visual Basic, Visual C#, Visual J# и макропроектов. Для макропроектов существуют определенные значения перечисления. Перечисление PrjKind имеет для макропроектов значение prjKindVSAProject. В перечислении PrjBrowseObjectCATID имеются значения для расширения элементов в окне свойств:

prjCATIDVSAFolderBrowseObject

prjCATIDVSAFileBrowseObject

prjCATIDVSAConfig

prjCATIDVSAReferenceBrowseObject

Поведение объектов VSLangProj при работе с макросами

Поведение объектов VSLangProj, VSLangProj2 и VSLangProj80 слегка отличается в Visual Basic, Visual C#, Visual J# и в макропроектах. Это происходит потому, что в этом объекте точно представлен тип проекта. Многие свойства и методы объектов не поддерживаются для макропроектов, как перечислено ниже.

VSProject В данном объекте представлены подробные сведения о проекте, имеющие отношение к макросам.

  • BuildManager Это свойство не поддерживается, при доступе к нему возникает исключение:

  • CopyProject Этот метод не поддерживается, и при его вызове не выбрасывается исключение.

  • WorkOffline Данное свойство всегда возвращает значение False. При попытке задать это свойство не возникает исключение, но ему нельзя присвоить значение True.

VSProjectItem В данном объекте представлены подробные сведения о проекте, имеющие отношение к макросам.

  • RunCustomTool Этот метод не поддерживается, и при его вызове не выбрасывается исключение.

ProjectProperties3 В этих свойствах описываются проекты Visual Basic, Visual C#, Visual J# и макропроекты. Следующие свойства не поддерживаются:

ActiveFileSharePath

FullPath

ApplicationIcon

LinkRepair

AssemblyName

OfflineURL

AssemblyKeyContainerName

OutputFileName

AssemblyOriginatorKeyFile

OutputType

AssemblyOriginatorKeyMode

URL

DefaultClientScript

WebAccessMethod

DefaultHTMLPageLayout

WebServer

DefaultTargetSchema

WebServerVersion

ActiveFileSharePath

 

FileProperties2 В этих свойствах описываются элементы проектов Visual Basic, Visual C#, Visual J# и макропроектов. Следующие свойства файлов не поддерживаются, и при доступе к ним возникает ошибка.

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#, Visual J# и макросов. Следующие свойства файлов не поддерживаются, и при доступе к ним возникает ошибка.

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