Partager via


Introduction à l'extensibilité de projet

Le modèle d'objet est disponible par le simple ajout de références aux assemblys VSLangProj dans votre projet : assemblys VSLangProj.dll, VSLangProj2.dll, VSLangProj80.dll, VSLangProj90a.dll et VSLangProj100.dll. Pour plus d'informations, consultez Comment : ajouter ou supprimer des références dans Visual Studio. En d'autres termes, le modèle objet est disponible pour les macros, les compléments et tout autre type de projet qui doit étendre ou automatiser l'environnement de développement intégré. Les macros sont écrites dans l'environnement de développement intégré Macros à l'aide de Visual Basic. Les exemples des rubriques sont écrits dans les langages Visual Basic et Visual C#. Pour plus d'informations sur l'exécution des exemples, consultez Comment : compiler et exécuter les exemples de code du modèle objet Automation. Les compléments peuvent être écrits dans tout langage hébergé Visual Studio, tel que Visual Basic, Visual C# et Visual C++. Les rubriques de référence des membres VSLangProj, VSLangProj2VSLangProj80, VslangProj90 et VslangProj100 comprennent la syntaxe relative à chacun de ces langages. Pour une description des types de projets d'automation et des capacités d'automation, consultez Création de compléments et d'Assistants.

Espaces de noms VSLangProj

Ces espaces de noms contiennent toutes les classes, interfaces et énumérations destinées aux projets Visual Basic et Visual C#. Pour obtenir la liste complète des objets présents dans l'espace de noms, consultez Modèle objet d'extensibilité Visual Basic et Visual C# pour les projets.

Erreur possible liée à l'utilisation d'assemblys VSLangProj avec un assembly EnvDTE

Si vous créez un projet qui référence un ou plusieurs des assemblys VSLangProj et l'assembly EnvDTE, vous obtenez parfois l'erreur suivante au moment de l'exécution :

« Exception non gérée : System.IO.FileNotFoundException: Erreur lors du chargement du fichier 'EnvDTE, Version=7 .0.3300.0 »

Cette erreur est liée à un conflit de résolution de type à l'exécution. En d'autres termes, la version de EnvDTE incluse dans Visual Studio 2005 est 8.0.xx, mais la référence de configuration du projet recherche une version antérieure de cet assembly, à savoir la version 7.0.xx. Pour corriger ce problème, vous devez ajouter une redirection de liaison pour la version la plus récente de EnvDTE au fichier de configuration (.config) de votre projet. Ainsi, Visual Studio pourra charger la version la plus récente de EnvDTE et empêcher l'erreur de se produire.

Pour ce faire, ajoutez un « Fichier de configuration de l'application » à votre projet, puis remplacez son contenu par les éléments suivants :

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <runtime>
        <assemblyBinding xmlns="urn:schemas-microsoft-
        com:asm.v1" appliesTo="v2.0.50318">
            <dependentAssembly>
                <assemblyIdentity name="EnvDTE" publicKeyToken=
                "b03f5f7f11d50a3a"/>
                <bindingRedirect oldVersion="7.0.3300.0" 
                newVersion="8.0.0.0"/>
            </dependentAssembly>
        </assemblyBinding>
    </runtime>
</configuration>

Objet VSProject2

Cet objet donne accès à d'autres objets du modèle d'extensibilité. L'objet DTE est l'objet de niveau supérieur dans le modèle Automation Visual Studio. 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. Ce type de propriété est déterminé au moment de l'exécution par le langage du projet. Dans un projet Visual Basic ou Visual C#, la propriété Object retourne un objet de type VSProject2. 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 VSProject2. Dans une macro, le cast se présente comme suit si le premier projet est un projet Visual Basic :

Imports EnvDTE
Imports EnvDTE80
Imports VSLangProj
Imports VSLangProj2
Imports VSLangProj80
Imports VSLangProj90
Imports VSLangProj100
Dim proj As EnvDTE.Project
Dim vsproject As VSLangProj80.VSProject2
proj = DTE.Solution.Projects.Item(1)
vsproject = CType(proj.Object, VSLangProj80.VSProject2)
using EnvDTE;
using EnvDTE80;
using EnvDTE90;
using VSLangProj;
using VSLangProj2;
using VSLangProj80;
using VSLangProj90;
using VSLangProj100;
EnvDTE.Project proj;
VSLangProj80.VSproject2 vsproject;
proj = DTE2.Solution.Projects.Item(1);
vsproject = (VSLangProj80.VSProject2)proj.Object;

Une fois que avez référencé l'élément VSProject2, vous pouvez manipuler les propriétés, les configurations, les fichiers, les dossiers, les instructions Imports et les références du projet.

Pour plus d'informations, consultez Introduction à l'objet VSProject2.

References et Reference, objets

La propriété References, contenue par l'objet VSProject2, renferme une collection d'objets Reference3. L'objet Reference3 représente une référence de projet ; il s'agit principalement d'un objet en lecture seule qui prend en charge une méthode Remove. L'objet References assure la prise en charge de l'ajout de références (COM, assemblys .NET, ActiveX et autres projets) et du déclenchement d'événements (ajout, suppression et modification de références).

L'objet References ne contient pas les références Web d'un projet. Les références Web d'un projet peuvent être récupérées au moyen de la propriété ProjectItems de WebReferencesFolder.

Pour plus d'informations et des exemples de code, consultez Reference et l'objet Reference3, la collection References et les propriétés References et WebReferencesFolder.

Imports, objet

La propriété Imports contenue par l'objet VSProject2 gère une collection d'instructions Imports qui s'appliquent à l'intégralité d'un projet Visual Basic. Si une instruction Imports est ajoutée à cette collection, l'instruction Imports correspondante (par exemple, Imports VSLangProj) ne doit pas être ajoutée au fichier de code. Cet objet prend en charge l'ajout et la suppression d'instructions Imports ainsi que le déclenchement d'événements en réponse à l'ajout et à la suppression d'instructions. Il n'y a aucun équivalent dans un projet Visual C#, et la propriété VSProject2.Imports retourne Nothing ou null lorsqu'elle est appliquée à un projet Visual C#. Pour plus d'informations, consultez Imports.

VSProjectItem et BuildManager, objets

L'objet VSProjectItem est l'équivalent de l'objet VSProject2 pour les éléments de projet. Dans le modèle d'extensibilité général, l'objet générique ProjectItem représente un élément de projet. La propriété Object est de type Object. Dans un projet Visual Basic ou Visual C#, le type de cette propriété est VSProjectItem. Dans une macro, le cast de l'objet en type VSProjectItem se présente comme suit :

Imports EnvDTE
Imports EnvDTE80
Imports VSLangProj
Imports VSLangProj2
Imports VSLangProj80
Imports VSLangProj90
Imports VSLangProj100
Dim pi As VSProjectItem
pi = CType(DTE2.Solution.Projects.Item(1).ProjectItems.Item(1)._
    Object, VSProjectItem)
using EnvDTE;
using EnvDTE80;
using VSLangProj;
using VSLangProj2;
using VSLangProj80;
using VSLangProj90;
using VSLangProj100;
EnvDTE.Project proj;
VSLangProj.VSProjectItem pi;
Pi = (VSProject2)DTE2.Solution.Projects.Item(1).ProjectItems.Item(1).
Object;

L'objet VSProjectItem comprend des propriétés liées au projet et à l'élément de projet parents, ainsi qu'une méthode qui force l'exécution d'un outil personnalisé sur cet élément. L'objet BuildManager gère la sortie de l'outil personnalisé. Pour plus d'informations, consultez la méthode RunCustomTool, Introduction à l'objet BuildManager, l'objet VSProjectItem et l'objet BuildManager.

Properties, propriété

Le modèle d'extensibilité générale possède une propriété Properties dans trois objets :

  • Objet Project   Les propriétés de cet objet sont identiques aux propriétés figurant sous l'onglet Propriétés communes de la boîte de dialogue Pages de propriétés du projet dans l'environnement de développement intégré.

  • Objet Configuration   Les propriétés de cet objet sont identiques aux propriétés figurant sous l'onglet Propriétés de configuration de la boîte de dialogue Pages de propriétés du projet dans l'environnement de développement intégré.

  • Objet ProjectItem   Les propriétés de cet objet sont identiques aux propriétés figurant dans la fenêtre Propriétés lorsqu'un élément de projet est sélectionné dans l'Explorateur de solutions.

  • Dans les trois cas, la propriété Properties est une collection d'objets de type Property. Il est possible d'obtenir un objet Property de la collection en spécifiant l'index de base 1 de la propriété ou son nom. Le contenu de la collection dépend du langage. Dans le cas des éléments de projet, le contenu varie également selon que l'élément est un fichier ou un dossier.

Voir aussi

Concepts

Diversité de l'automation Visual Studio

Autres ressources

Création de compléments et d'Assistants