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 :
accès aux objets d'extensibilité d'un projet macro ;
Les projets macro et les objets VSProject et VSProject2
Les éléments spécifiques aux macros des objets VSLangProj, VSLangProj2 et VSLangProj80.
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 :
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 :
|
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 :
Les FolderProperties2 suivantes ne sont pas prises en charge et l'accès à celles-ci génère une erreur.
|
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 :
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.