Partilhar via


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:

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:

prjCATIDVSAFolderBrowseObject

prjCATIDVSAFileBrowseObject

prjCATIDVSAConfig

prjCATIDVSAReferenceBrowseObject

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:

ActiveFileSharePath

FullPath

ApplicationIcon

LinkRepair

AssemblyName

OfflineURL

AssemblyKeyContainerName

OutputFileName

AssemblyOriginatorKeyFile

OutputType

AssemblyOriginatorKeyMode

URL

DefaultClientScript

WebAccessMethod

DefaultHTMLPageLayout

WebServer

DefaultTargetSchema

WebServerVersion

ActiveFileSharePath

 

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:

Author

FullPath

BuildAction

IsDependentFile

IsCustomToolOutput

IsDesignTimeBuildInput

CustomToolNamespace

IsLink

CustomToolOutput

HTMLTitle

DateCreated

LocalPath

DateModified

ModifiedBy

Extension

SubType

FileName

URL

O seguinte FolderProperties2 não são suportados e acessá-las lançará um erro.

FullPath

URL

LocalPath

 

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:

AllowUnsafeBlocks

IntermediatePath

BaseAddress

OutputPath

CheckForOverflowUnderflow

StartAction

DocumentationFile

StartArguments

EnableASPXDebugging

StartProgram

EnableUnmanagedDebugging

StartURL

IncrementalBuild

StartWithIE

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:

AddActiveX

AddProject

Consulte também

Referência

MacrosIDE

VSProject

Imports

VSProjectItem

BuildManager

VSProject2

Reference3

Conceitos

Introduction to Project Extensibility