Модель объектов проекта макроса
Обновлен: Ноябрь 2007
Visual Studio включает инструменты для написания и записи макросов. (Общие сведения см. в разделе Автоматизация повторяющихся действий с помощью макросов). В Visual Studio также имеется программируемая модель объектов, предоставляющая макропроекты. Эта модель содержит как объекты общего назначения для элементов проекта, не зависящих от языка, так и объекты для макросов. Объекты для макросов, представленные в пространствах имен VSLangProj, VSLangProj2, и VSLangProj80 используются точно как в проектах Visual Basic, Visual C# и Visual J#. В данном разделе обсуждаются следующие темы.
Доступ к объектам макропроекта.
Макропроекты и объекты VSProject и VSProject2
Элементы объектов VSLangProj, VSLangProj2, и VSLangProj80 для макросов
Дополнительные сведения об объектах 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 имеются значения для расширения элементов в окне свойств:
Поведение объектов 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# и макропроекты. Следующие свойства не поддерживаются:
|
FileProperties2 В этих свойствах описываются элементы проектов Visual Basic, Visual C#, Visual J# и макропроектов. Следующие свойства файлов не поддерживаются, и при доступе к ним возникает ошибка.
Следующие свойства FolderProperties2 не поддерживаются, и при доступе к ним возникает ошибка.
|
ProjectConfigurationProperties3 В этих свойствах описываются конфигурации развертывания для Visual Basic, Visual C#, Visual J# и макросов. Следующие свойства файлов не поддерживаются, и при доступе к ним возникает ошибка.
Reference3 Этот объект содержит ссылку на один проект. Следующее свойство не поддерживается, при доступе к нему возникает исключение:
References Этот объект предоставляет коллекцию всех ссылок в макропроекте. Следующие методы не поддерживаются, и при их вызове создается исключение:
См. также
Основные понятия
Введение в технологию расширения проектов