Compartir a través de


Modelo de objetos de un proyecto de macros

Actualización: noviembre 2007

Visual Studio incluye herramientas para escribir y registrar macros. (Para obtener información general, vea Automatizar acciones repetitivas mediante macros). Visual Studio también incluye un modelo de objetos programable que expone los proyectos de macros. Este modelo contiene objetos de extensibilidad general para elementos del proyecto independientes del lenguaje y objetos específicos de macros. Los objetos específicos de macros que se encuentran en los espacios de nombres VSLangProj, VSLangProj2 y VSLangProj80, se utilizan al igual que en los proyectos de Visual Basic, Visual C# y Visual J#. Este tema describe:

Para obtener más información sobre objetos, VSLangProj, VSLangProj2 y VSLangProj80, vea Introducción a la extensibilidad de proyectos. Para obtener más información sobre extensibilidad general, vea Ampliar el entorno de Visual Studio.

Acceso a objetos de extensibilidad de proyectos de macros

Se obtiene acceso a los proyectos de macros mediante la propiedad MacrosIDE del objeto de extensibilidad DTE2. La propiedad MacrosIDE devuelve un objeto de tipo DTE2, para que pueda obtener acceso al entorno de desarrollo integrado (IDE) de macros, incluidas las soluciones, los proyectos, las ventanas de herramientas y los eventos. La siguiente macro enumera todos los módulos de proyectos 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 

Proyectos de macros y los objetos VSLangProj

En el modelo de extensibilidad general, un proyecto se representa con el objeto genérico Project. El objeto Project posee una propiedad Object. En un proyecto de macros, la propiedad Object devuelve un objeto de tipo VSProject. Dado que el tipo de la propiedad Object es object, deberá convertir la referencia al tipo VSProject. Puede utilizar la enumeración PrjKind o PrjKind2 para comprobar el tipo de proyecto antes de realizar la conversión. La conversión sería similar al ejemplo siguiente si se realiza en una 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

El objeto VSProject2 es el contenedor de muchos otros objetos de los espacios de nombres VSLangProj, VSLangProj2 y VSLangProj80, incluidos los objetos References, Reference, Imports y BuildManager.

En el modelo de extensibilidad general, un elemento de proyecto se representa con el objeto genérico ProjectItem. El objeto ProjectItem posee una propiedad Object. En un proyecto de macros, la propiedad Object devuelve un objeto de tipo VSProjectItem. Puesto que el tipo de la propiedad Object es Object, debe convertir la referencia al tipo VSProjectItem. La conversión sería similar al ejemplo siguiente si se realiza en una 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 macros de los objetos VSLangProj

Los objetos de los espacios de nombres VSLangProj, VSLangProj2 y VSLangProj80 se utilizan para proyectos de Visual Basic, Visual C#, Visual J# y de macros. Hay algunos valores de enumeración que son específicos de proyectos de macros. La enumeración PrjKind tiene un valor para los proyectos de macros, prjKindVSAProject. La enumeración PrjBrowseObjectCATID posee los siguientes valores para ampliar los elementos de la ventana Propiedades:

prjCATIDVSAFolderBrowseObject

prjCATIDVSAFileBrowseObject

prjCATIDVSAConfig

prjCATIDVSAReferenceBrowseObject

Comportamiento específico de macros de los objetos VSLangProj

El comportamiento de los objetos VSLangProj, VSLangProj2 y VSLangProj80 varía ligeramente entre los proyectos de Visual Basic, Visual C#, Visual J# y de macros. Esto es así para que el objeto represente exactamente el tipo de proyecto. Muchas de las propiedades y métodos de los objetos no son compatibles con proyectos de macros, como se indica a continuación.

VSProject: este objeto representa los detalles específicos de macros de un proyecto.

  • BuildManager No se admite esta propiedad y si se obtiene acceso a ella se producirá una excepción.

  • CopyProject No se admite este método y si se le llama se producirá una excepción.

  • WorkOffline Esta propiedad siempre devuelve False. Si se intenta establecer esta propiedad no se producirá una excepción, pero la propiedad no puede establecerse en True.

VSProjectItem: este objeto representa los detalles específicos de macros de un elemento de proyecto.

  • RunCustomTool No se admite este método y si se le llama se producirá una excepción.

ProjectProperties3: estas propiedades describen proyectos de Visual Basic, Visual C#, Visual J# y de macros. Las siguientes propiedades no son compatibles:

ActiveFileSharePath

FullPath

ApplicationIcon

LinkRepair

AssemblyName

OfflineURL

AssemblyKeyContainerName

OutputFileName

AssemblyOriginatorKeyFile

OutputType

AssemblyOriginatorKeyMode

URL

DefaultClientScript

WebAccessMethod

DefaultHTMLPageLayout

WebServer

DefaultTargetSchema

WebServerVersion

ActiveFileSharePath

 

FileProperties2: estas propiedades describen proyectos de Visual Basic, Visual C#, Visual J# y elementos de proyectos de macros. Las siguientes propiedades de archivo no son compatibles y el acceso a éstas producirá un error:

Author

FullPath

BuildAction

IsDependentFile

IsCustomToolOutput

IsDesignTimeBuildInput

CustomToolNamespace

IsLink

CustomToolOutput

HTMLTitle

DateCreated

LocalPath

DateModified

ModifiedBy

Extension

SubType

FileName

URL

Las siguientes propiedades FolderProperties2 no son compatibles y el acceso a éstas producirá un error:

FullPath

URL

LocalPath

 

ProjectConfigurationProperties3: estas propiedades describen proyectos de Visual Basic, Visual C#, Visual J# y configuraciones de implementación de macros. Las siguientes propiedades de archivo no son compatibles y el acceso a éstas producirá un error:

AllowUnsafeBlocks

IntermediatePath

BaseAddress

OutputPath

CheckForOverflowUnderflow

StartAction

DocumentationFile

StartArguments

EnableASPXDebugging

StartProgram

EnableUnmanagedDebugging

StartURL

IncrementalBuild

StartWithIE

Reference3: este objeto representa una referencia de proyecto. No se admite la siguiente propiedad y si se obtiene acceso a ella se producirá una excepción:

References: este objeto representa una colección de todas las referencias del proyecto de macros. No se admiten los siguientes métodos y si se llama a uno de ellos se producirá una excepción:

AddActiveX

AddProject

Vea también

Conceptos

Introducción a la extensibilidad de proyectos

Referencia

MacrosIDE

VSProject

Imports

VSProjectItem

BuildManager

VSProject2

Reference3