Partilhar via


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:

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:

prjCATIDVSAFolderBrowseObject

prjCATIDVSAFileBrowseObject

prjCATIDVSAConfig

prjCATIDVSAReferenceBrowseObject

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:

ActiveFileSharePath

FullPath

ApplicationIcon

LinkRepair

AssemblyName

OfflineURL

AssemblyKeyContainerName

OutputFileName

AssemblyOriginatorKeyFile

OutputType

AssemblyOriginatorKeyMode

URL

DefaultClientScript

WebAccessMethod

DefaultHTMLPageLayout

WebServer

DefaultTargetSchema

WebServerVersion

ActiveFileSharePath

 

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:

Author

FullPath

BuildAction

IsDependentFile

IsCustomToolOutput

IsDesignTimeBuildInput

CustomToolNamespace

IsLink

CustomToolOutput

HTMLTitle

DateCreated

LocalPath

DateModified

ModifiedBy

Extension

SubType

FileName

URL

A seguir FolderProperties2 Não há suporte; e acessá-las lançará um erro.

FullPath

URL

LocalPath

 

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:

AllowUnsafeBlocks

IntermediatePath

BaseAddress

OutputPath

CheckForOverflowUnderflow

StartAction

DocumentationFile

StartArguments

EnableASPXDebugging

StartProgram

EnableUnmanagedDebugging

StartURL

IncrementalBuild

StartWithIE

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:

AddActiveX

AddProject

Consulte também

Conceitos

Introdução a extensibilidade de projetos

Referência

MacrosIDE

VSProject

Imports

VSProjectItem

BuildManager

VSProject2

Reference3