Comment : accéder aux propriétés de types de projets spécifiques

Le modèle Automation général de Visual Studio fournit la collection Properties qui peut être utilisée pour accéder aux collections Properties de tout type de projet Visual Studio. Entre autres choses, les propriétés de projet vous permettent de contrôler des paramètres de sécurité ou le nom de l'assembly.

Pour définir et examiner manuellement des propriétés de projet, ouvrez un projet dans l'environnement de développement intégré (IDE) de Visual Studio. Dans le menu Projet, cliquez sur Propriétés. La fenêtre Propriétés présente plusieurs onglets et chaque volet répertorie les propriétés utilisées pour définir et contrôler le comportement de projets. Le modèle Automation vous permet de contrôler ces paramètres par programmation. Plus spécifiquement, les propriétés présentes dans ProjectProperties3 vous permettent de contrôler les propriétés de projet présentes dans les volets Application, Ressources, Paramètres, Chemins d'accès des références et Signature de la page Propriétés des projets Visual C#. Les propriétés définies dans VBProjectProperties3 vous permettent de contrôler les paramètres des propriétés des projets Visual Basic, accessibles dans les volets de fenêtre Application, Ressources, Paramètres, Références et Signature de la page Propriétés.

Les propriétés pour les projets Visual C# sont définies dans ProjectProperties3. Les propriétés pour les projets Visual Basic sont définies dans VBProjectProperties3. Les propriétés MyApplication et MyType sont spécifiques aux projets Visual Basic uniquement. Les autres propriétés présentes dans VBProjectProperties3 sont identiques aux propriétés présentes dans ProjectProperties3.

Ces propriétés sont inaccessibles par un cast direct d'un objet Properties en un objet ProjectProperties3 ou VBProjectProperties3. Au lieu de cela, l'accès à ces propriétés s'effectue par le biais de la collection Properties, en fournissant le nom de la propriété pour le type de projet spécifique sous la forme d'une chaîne, afin de spécifier le Property. Par exemple, le code, EnvDTE.Property prop = EnvDTE.Properties.Item("ApplicationIcon"); vous permet d'accéder à la propriété ApplicationIcon.

En effet, les propriétés définies dans ProjectProperties3 et VBProjectProperties3 constituent une liste de références aux propriétés disponibles pour des projets spécifiques accessibles en tant qu'éléments de propriété de projet.

Les étapes ci-dessous détaillent la manière d'accéder par programme à ces propriétés dans un complément Visual Studio.

Notes

Il est possible que pour certains des éléments de l'interface utilisateur de Visual Studio, votre ordinateur affiche des noms ou des emplacements différents de ceux indiqués dans les instructions suivantes.Ces éléments dépendent de l'édition de Visual Studio dont vous disposez et des paramètres que vous utilisez.Pour plus d'informations, consultez Paramètres Visual Studio.

Pour accéder aux propriétés pour un type de projet spécifique

  1. Créez un projet de complément Visual Studio en utilisant Visual C#.

  2. Dans le menu Projet, cliquez sur Ajouter une référence puis cliquez sur l'onglet .NET. Ensuite, sélectionnez VSLangProj, VSLangProj2, VSLangProj80 et Sytem.Windows.Forms, puis cliquez sur OK.

  3. Ajoutez les instructions d'utilisation suivantes au début du fichier Connect.cs :

    using VSLangProj;
    using VSLangProj2;
    using VSLangProj80;
    using VSLangProj90;
    using VSLangProj100;
    using System.Windows.Forms;
    
  4. Ajoutez un appel à une nouvelle méthode nommée VSProjectProperies à la méthode OnConnection après la ligne qui définit la méthode _addInstance comme indiqué ci-dessous.

    _applicationObject = (DTE2)application;
    _addInInstance = (AddIn)addInInst;
    VSProjectProperties(_applicationObject);
    
  5. Ajoutez la méthode VSProjectProperties directement sous la méthode OnConnection.

    public void VSProjectProperties(DTE2 dte)
    {
        try
        {
            // Open a Visual C# or Visual Basic project
            // before running this add-in.
            Project project;
            project = _applicationObject.Solution.Projects.Item(1);
            Property prop;
            prop = project.Properties.Item("AssemblyName");
            MessageBox.Show("The assembly name is: " 
    + prop.Value .ToString());
            prop.Value = "MyTestAssembly";
            MessageBox.Show("The assembly name is now: " 
    + prop.Value.ToString());
            // If the project is a Visual Basic project, set
            // the MyApplication property.
            if (project.Kind == "{F184B08F-C81C-45F6-A5F6-5ABD9991F28F}")
    
            {
                MessageBox.Show("The project is a Visual 
    Basic Project");
                prop = project.Properties.Item("MyType");
                MessageBox.Show("The MyType value is: " 
    + prop.Value.ToString());
                prop.Value = "Class Library";
                MessageBox.Show("The MyType value is now: " 
    + prop.Value.ToString());
            }
        }
        catch(Exception ex)
        {
            MessageBox.Show(ex.Message);
        }
    }
    

    La méthode VSProjectProperties définit et obtient la propriété AssemblyName en la passant comme une chaîne d'élément Property à la collection Properties. Si le projet est un projet Visual Basic, la méthode VSProjectProperties définit et obtient également la propriété MyType.

    La section Exemple fournit l'intégralité du code.

  6. Générez le complément en cliquant sur Générer la solution dans le menu Générer.

  7. Ouvrez un projet Visual C# ou Visual Basic dans l'IDE Visual Studio.

  8. Dans le menu Outils, cliquez sur Gestionnaire de compléments, puis sélectionnez votre complément dans la boîte de dialogue Gestionnaire de compléments. Cliquez sur OK pour exécuter votre complément.

  9. Validez les modifications apportées au nom de l'assembly en cliquant sur Propriétés dans le menu Projet, puis sélectionnez l'onglet Application dans la fenêtre Propriétés.

    Le champ Nom de l'assembly reflète la modification apportée par programmation.

Exemple

L'exemple suivant est un complément Visual Studio de base qui montre comment accéder à des propriétés spécifiques à des types de projets à l'aide de l'automation dans Visual Studio.

using System;
using System;
using Extensibility;
using EnvDTE;
using EnvDTE80;
using EnvDTE90;
using EnvDTE90a;
using EnvDTE100;
using System.Windows.Forms;
using VSLangProj;
using VSLangProj2;
using VSLangProj80;
using VSLangProj90;
using VSLangProj100;
namespace myAddin
    public void OnConnection(object application, 
ext_ConnectMode connectMode, object addInInst, ref Array custom)
    {
        _applicationObject = (DTE2)application;
        _addInInstance = (AddIn)addInInst;
        VSProjectProperties(_applicationObject);
    }
    public void VSProjectProperties(DTE2 dte)
    {
        try
        {
            // Open a Visual C# or Visual Basic project
            // before running this add-in.
            Project project;
            project = _applicationObject.Solution.Projects.Item(1);
            Property prop;
            prop = project.Properties.Item("AssemblyName");
            MessageBox.Show("The assembly name is: " 
+ prop.Value .ToString());
            prop.Value = "MyTestAssembly";
            MessageBox.Show("The assembly name is now: " 
+ prop.Value.ToString());
            // If the project is a Visual Basic project, set
            // the MyApplication property.
            if (project.Kind == PrjKind.prjKindVBProject)
            {
                MessageBox.Show
("The project is a Visual Basic Project");
                prop = project.Properties.Item("MyType");
                MessageBox.Show("The MyType value is: " 
+ prop.Value.ToString());
                prop.Value = "Class Library";
                MessageBox.Show("The MyType value is now: " 
+ prop.Value.ToString());
            }
        }
        catch(Exception ex)
        {
            MessageBox.Show(ex.Message);
        }
    }
Imports System
Imports Microsoft.VisualStudio.CommandBars
Imports Extensibility
Imports EnvDTE
Imports EnvDTE80
Imports EnvDTE90
Imports EnvDTE90a
Imports EnvDTE100
Imports VSLangProj
Imports VSLangProj2
Imports VSLangProj80
Imports VSLangProj90
Imports VSLangProj100

    Public Sub OnConnection(ByVal application As Object, _
 ByVal connectMode As ext_ConnectMode, ByVal addInInst As Object, _
 ByRef custom As Array) Implements IDTExtensibility2.OnConnection
        _applicationObject = CType(application, DTE2)
        _addInInstance = CType(addInInst, AddIn)
        VSProjectProperties(_applicationObject)
    End Sub
    Sub VSProjectProperties(ByVal dte As DTE2)
        ' Open a Visual C# or Visual Basic project
        ' before running this add-in.
        Try
            Dim project As Project
            project = _applicationObject.Solution.Projects.Item(1)
            Dim prop As [Property]
            prop = project.Properties.Item("AssemblyName")
            MsgBox("The assembly name is: "  _
            & prop.Value.ToString())
            prop.Value = "MyTestAssembly"
            MsgBox("The assembly name is now: "  _
            & prop.Value.ToString())
            ' If the project is a Visual Basic project, set
            ' the MyApplication property.
            If project.Kind = PrjKind.prjKindVBProject Then
                MsgBox("The project is a Visual Basic Project")
                prop = project.Properties.Item("MyType")
                MsgBox("The MyType value is: "  _
                & prop.Value.ToString())
                prop.Value = "Class Library"
                MsgBox("The MyType value is now: "  _
                & prop.Value.ToString())
            End If
        Catch ex As System.Exception
            MsgBox(ex.ToString)
        End Try
    End Sub

Compilation du code

Pour compiler ce code, créez un projet de complément Visual Studio et remplacez le code de la méthode OnConnection par celui de l'exemple. Pour plus d'informations sur l'exécution d'un complément, consultez Comment : contrôler des compléments avec le Gestionnaire de compléments.

Voir aussi

Autres ressources

Project Properties

Accès aux propriétés de projet, d'élément de projet et de configuration spécifiques au type de projet