Partager via


Modèle d'objet projet macro

Visual Studio comprend des outils de rédaction et d'enregistrement de macros. (Pour une vue d'ensemble, consultez Automatisation des actions répétitives à l'aide de macros.) Visual Studio comprend également un modèle objet programmable qui expose des projets macro. Ce modèle contient à la fois des objets d'extensibilité générale pour les éléments de projet indépendants du langage et pour les objets spécifiques aux macros. Les objets spécifiques aux macros, enregistrés dans les espaces de noms VSLangProj, VSLangProj2 et VSLangProj80, s'utilisent exactement comme dans les projets Visual Basic et Visual C#. Cette rubrique traite des points suivants :

Pour plus d'informations sur les objets VSLangProj, VSLangProj2 et VSLangProj80, consultez Introduction à l'extensibilité de projet. Pour plus d'informations sur l'extensibilité générale, consultez Extension de l'environnement Visual Studio.

Accès aux objets d'extensibilité d'un projet macro

Les projets macro sont accessibles par le biais de la propriété MacrosIDE de l'objet d'extensibilité DTE2. La propriété MacrosIDE retourne un objet du type DTE2, ce qui vous donne accès à l'environnement de développement intégré (IDE) des macros, et notamment à ses solutions, projets, fenêtres Outil, documents et événements. La macro qui suit répertorie tous les modules d'un projet 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 

Projets macro et objets VSLangProj

Dans le modèle d'extensibilité générale, un projet est représenté par l'objet Project générique. L'objet Project possède une propriété Object. Dans un projet macro, la propriété Object retourne un objet de type VSProject. Dans la mesure où le type de la propriété Object est Object, vous devez effectuer un cast de la référence en type VSProject. Vous pouvez utiliser l'énumération PrjKind ou PrjKind2 pour vérifier le type de projet avant d'effectuer le cast. Le cast se présentera de la manière suivante s'il est effectué dans une 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

L'objet VSProject2 est le conteneur de plusieurs autres objets dans les espaces de noms VSLangProj, VSLangProj2 et VSLangProj80, notamment des objets References, Reference, Imports et BuildManager.

Dans le modèle d'extensibilité générale, un élément de projet est représenté par l'objet ProjectItem générique. L'objet ProjectItem possède une propriété Object. Dans un projet macro, la propriété Object retourne un objet de type VSProjectItem. Dans la mesure où le type de la propriété Object est Object, vous devez effectuer un cast de la référence en type VSProjectItem. Le cast se présentera de la manière suivante s'il est effectué dans une 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

Éléments spécifiques aux macros des objets VSLangProj

Les objets présents dans les espaces de noms VSLangProj, VSLangProj2 et VSLangProj80 sont utilisés pour des projets Visual Basic et Visual C#, ainsi que pour des projets macro. Certaines valeurs d'énumération sont spécifiques aux projets macro. L'énumération PrjKind contient une valeur pour les projets macro, prjKindVSAProject. L'énumération PrjBrowseObjectCATID contient les valeurs suivantes qui permettent d'étendre les éléments de la fenêtre Propriétés :

prjCATIDVSAFolderBrowseObject

prjCATIDVSAFileBrowseObject

prjCATIDVSAConfig

prjCATIDVSAReferenceBrowseObject

Comportement spécifique aux macros des objets VSLangProj

Le comportement des objets VSLangProj, VSLangProj2 et VSLangProj80 varie légèrement entre les projets Visual Basic et Visual C#, et les projets macro. Cela permet à l'objet de représenter de façon précise le type de projet. De nombreuses propriétés et méthodes des objets (répertoriées ci-dessous) ne sont pas prises en charge dans les projets macro.

VSProject   Cet objet représente les détails d'un projet spécifiques à la macro.

  • BuildManager Cette propriété n'est pas prise en charge et l'accès à celle-ci lève une exception.

  • CopyProject Cette méthode n'est pas prise en charge et l'appel à celle-ci lève une exception.

  • WorkOffline Cette propriété retourne toujours False. Aucune exception n'est levée si vous essayez de définir cette propriété, mais elle ne peut pas avoir la valeur True.

VSProjectItem   Cet objet représente les détails d'un élément de projet spécifiques à la macro.

  • RunCustomTool Cette méthode n'est pas prise en charge et l'appel à celle-ci lève une exception.

ProjectProperties3   Ces propriétés décrivent des projets Visual Basic et Visual C#, ainsi que des projets macro. Les propriétés suivantes ne sont pas prises en charge :

ActiveFileSharePath

FullPath

ApplicationIcon

LinkRepair

AssemblyName

OfflineURL

AssemblyKeyContainerName

OutputFileName

AssemblyOriginatorKeyFile

OutputType

AssemblyOriginatorKeyMode

URL

DefaultClientScript

WebAccessMethod

DefaultHTMLPageLayout

WebServer

DefaultTargetSchema

WebServerVersion

ActiveFileSharePath

 

FileProperties2   Ces propriétés décrivent des éléments Visual Basic et Visual C#, ainsi que des éléments de projet macro. Les propriétés de fichier suivantes ne sont pas prises en charge et l'accès à celles-ci génère une erreur :

Author

FullPath

BuildAction

IsDependentFile

IsCustomToolOutput

IsDesignTimeBuildInput

CustomToolNamespace

IsLink

CustomToolOutput

HTMLTitle

DateCreated

LocalPath

DateModified

ModifiedBy

Extension

SubType

FileName

URL

Les FolderProperties2 suivantes ne sont pas prises en charge et l'accès à celles-ci génère une erreur.

FullPath

URL

LocalPath

 

ProjectConfigurationProperties3   Ces propriétés décrivent des configurations de projets Visual Basic et Visual C#, ainsi que des configurations de déploiement de macros. Les propriétés de fichier suivantes ne sont pas prises en charge et l'accès à celles-ci génère une erreur :

AllowUnsafeBlocks

IntermediatePath

BaseAddress

OutputPath

CheckForOverflowUnderflow

StartAction

DocumentationFile

StartArguments

EnableASPXDebugging

StartProgram

EnableUnmanagedDebugging

StartURL

IncrementalBuild

StartWithIE

Reference3   Cet objet représente une référence de projet distincte. La propriété qui suit n'est pas prise en charge et l'accès à celle-ci lève une exception.

References   Cet objet représente une collection de toutes les références du projet macro. Les méthodes suivantes ne sont pas prises en charge et l'appel à l'une d'elles lève une exception.

AddActiveX

AddProject

Voir aussi

Référence

MacrosIDE

VSProject

Imports

VSProjectItem

BuildManager

VSProject2

Reference3

Concepts

Introduction à l'extensibilité de projet