Modelo de objeto de projeto de macro
Visual Studioinclui ferramentas para a escrita e gravação de macros. (Para uma visão geral, consulte Automatizar ações repetitivas usando Macros.) Visual Studio também inclui um modelo de objeto programável que expõe projetos de macro. Este modelo contém tanto os objetos de extensibilidade geral para itens de projeto de idioma neutro e específico de macro. Os objetos específicos de macro, encontrado na VSLangProj, VSLangProj2 e VSLangProj80 namespaces, são usados apenas como em Visual Basic e Visual C# 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 VSLangProj, VSLangProj2 e VSLangProj80 objetos, consulte Introduction to Project Extensibility. 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 da DTE2 objeto de extensibilidade. O MacrosIDE propriedade retorna um objeto do tipo DTE2, para que você tenha acesso para o ambiente de desenvolvimento integrado (IDE), Macros, incluindo 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
Projetos de macro e os objetos de VSLangProj
No modelo de extensibilidade geral, um projeto é representado por genérico Project objeto. O Project o objeto tem um Object propriedade. Em um projeto de macro, o Object propriedade retorna um objeto do tipo VSProject. Porque o tipo da 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 seria a seguinte aparência se feito 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
O VSProject2 objeto é o recipiente para vários outros objetos do VSLangProj, VSLangProj2 e VSLangProj80 namespaces, inclusive References, Reference, Imports, e BuildManager objetos.
No modelo de extensibilidade geral, um item de projeto é representado por genérico ProjectItem objeto. O ProjectItem o objeto tem um Object propriedade. Em um projeto de macro, o Object propriedade retorna um objeto do tipo VSProjectItem. Desde o tipo da Object propriedade é o objeto, você deve converter a referência ao tipo VSProjectItem. A projeção seria a seguinte aparência se feito 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 de macro específicos dos objetos VSLangProj
Os objetos do VSLangProj, VSLangProj2 e VSLangProj80 namespaces são usados para Visual Basic, Visual C# e projetos de macro. Existem alguns valores de enumeração específicas para projetos de macro. O PrjKind enumeração tem um valor para projetos de macro, prjKindVSAProject. O PrjBrowseObjectCATID enumeração tem os seguintes valores para estender os itens na janela Propriedades:
Comportamento de macro específicos dos objetos VSLangProj
O comportamento da VSLangProj, VSLangProj2 e VSLangProj80 objetos varia um pouco entre Visual Basic, Visual C# e projetos de macro. Isso é para que o objeto representa com precisão o tipo de projeto. Muitas propriedades e métodos dos objetos não são suportados para projetos de macro, conforme listado abaixo.
VSProjectEste objeto representa os detalhes específicos de macro de um projeto.
BuildManagerNão há suporte para essa propriedade e acessar essa propriedade lança uma exceção.
CopyProjectEste método não é suportado e chamar este método lança uma exceção.
WorkOfflineEssa propriedade sempre retorna False. Tentar definir essa propriedade não lance uma exceção, mas não pode ser definida como True.
VSProjectItemEste objeto representa os detalhes específicos de macro de um item de projeto.
- RunCustomToolEste método não é suportado e chamar este método lança uma exceção.
ProjectProperties3Essas propriedades descrevem Visual Basic, Visual C# e projetos de macro. Não há suporte para as seguintes propriedades:
|
FileProperties2Essas propriedades descrevem Visual Basic, Visual C# e itens de projeto de macro. Não há suporte para as seguintes propriedades de arquivo e acessá-las emitirá um erro:
O seguinte FolderProperties2 não são suportados e acessá-las lançará um erro.
|
ProjectConfigurationProperties3Essas propriedades descrevem Visual Basic, Visual C# e configurações de implantação de macro. Não há suporte para as seguintes propriedades de arquivo e acessá-las emitirá um erro:
Reference3Este objeto representa uma referência de projeto. Não há suporte para a seguinte propriedade e acessar essa propriedade irá gerar uma exceção:
ReferencesEste objeto representa uma coleção de todas as referências do projeto de macro. Não há suporte para os seguintes métodos e chamar um deles lançará uma exceção: