O modelo de objeto de projeto de macro
Visual Studio inclui ferramentas para escrita e gravação de macros. (Para uma visão geral, consulte Automatizando Repetitive Actions by Using Macros.) Visual Studio também inclui um modelo de objeto programável que expõe os projetos de macro. Este modelo contém os objetos de extensibilidade Geral para itens de projeto com neutralidade de linguagem e objetos específicos de macro.sistema autônomo objetos específicos de macro, encontrados no VSLangProj, VSLangProj2 e VSLangProj80 namespaces, são usados apenas sistema autônomo em Visual Basic, Visual C# e Visual J# projetos. Este tópico discute:
Acessar os objetos de extensibilidade de um projeto de macro
Projetos de macro e o VSProject e VSProject2 objetos
Elementos específicos de macro do VSLangProj, VSLangProj2 e VSLangProj80 objetos
Para obter mais informações sobre o VSLangProj, VSLangProj2 e VSLangProj80 objetos, consulte Introdução a extensibilidade de projetos. Para obter mais informações sobre extensibilidade geral, consulte Estendendo o ambiente Visual Studio.
Acessar os objetos de extensibilidade de um projeto de macro
Projetos de macro são acessados por meio de MacrosIDE propriedade das DTE2 objeto de extensibilidade. The MacrosIDE propriedade retorna um objeto do tipo DTE2, para que você tenha acesso ao ambiente de desenvolvimento integrado (IDE) do macros, inclusive soluções, projetos, janelas de ferramentas, documentos e eventos. A macro a seguir lista todos os módulos em um projeto de macro.
' 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
Os objetos VSLangProj e projetos de macro
No modelo de extensibilidade geral, um projeto é representado pelo genéricoProject objeto. The Project o objeto tem um Object propriedade. Em um projeto de macro, o Object propriedade retorna um objeto do tipo VSProject. Porque o tipo do Object propriedade é o objeto, você deve converter a referência ao tipo VSProject. Você pode usar o PrjKind ou PrjKind2 enumeração para verificar o tipo de projeto antes de fazer o caso. A projeção pareceria com o seguinte se concluído em uma macro:
' 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
The VSProject2 objeto é o contêiner para vários outros objetos a VSLangProj, VSLangProj2 e VSLangProj80 namespaces, inclusive References, Reference, Imports, e BuildManager objetos.
No modelo de extensibilidade geral, um item de projeto é representado pelo genérico ProjectItem objeto. The ProjectItem o objeto tem um Object propriedade. Em um projeto de macro, o Object propriedade retorna um objeto do tipo VSProjectItem. Desde o tipo do Object propriedade é o objeto, você deve converter a referência ao tipo VSProjectItem. A projeção pareceria com o seguinte se concluído em uma macro:
' 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
Elementos específicos de macro dos objetos do VSLangProj
Os objetos no VSLangProj, VSLangProj2 e VSLangProj80 espaços para nome são utilizados para Visual Basic, Visual C#, Visual J# e projetos de macro. Há alguns valores de enumeração específicas para a projetos de macro.The PrjKind enumeração tem um valor para projetos de macro prjKindVSAProject. The PrjBrowseObjectCATID enumeração tem os seguintes valores para estender os itens na janela Propriedades:
Comportamento de macro específicos de objetos VSLangProj
O comportamento do VSLangProj, VSLangProj2 e VSLangProj80 objetos varia entre Visual Basic, Visual C#, Visual J# e projetos de macro. Isso é para que o objeto com precisão representa o tipo de projeto.Muitas propriedades e métodos dos objetos não há suporte para projetos de macro, conforme listado abaixo.
VSProject Este objeto representa os detalhes específicos de macro de um projeto.
BuildManager Não há suporte para esta propriedade e acessar essa propriedade lança uma exceção.
CopyProject Não há suporte para este método, e chamar este método lança uma exceção.
WorkOffline Essa propriedade sempre retorna False. Tentativa de conjunto esta propriedade não lançar uma exceção, mas a propriedade não pode ser definida como True.
VSProjectItem Este objeto representa os detalhes específicos de macro de um item de projeto.
- RunCustomTool Não há suporte para este método, e chamar este método lança uma exceção.
ProjectProperties3 Essas propriedades descrevem Visual Basic, Visual C#, Visual J# e projetos de macro. Não há suporte para as seguintes propriedades:
|
FileProperties2 Essas propriedades descrevem Visual Basic, Visual C#, Visual J# e itens de projeto de macro. As seguintes propriedades de arquivo não são suportadas e acessá-las lançará um erro:
A seguir FolderProperties2 Não há suporte; e acessá-las lançará um erro.
|
ProjectConfigurationProperties3 Essas propriedades descrevem Visual Basic, Visual C#, Visual J# e configurações de implantação de macro. As seguintes propriedades de arquivo não são suportadas e acessá-las lançará um erro:
Reference3 Este objeto representa uma referência de projeto. A seguinte propriedade não tem suporte e acessar essa propriedade lançará uma exceção:
References Este objeto representa uma coleção de todas as referências do projeto de macro. Os métodos a seguir não são suportados e chamar um deles lançará uma exceção:
Consulte também
Conceitos
Introdução a extensibilidade de projetos