Share via


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

Mise à jour : novembre 2007

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 programme. Plus spécifiquement, les propriétés présentes dans ProjectProperties3 vous permettent de contrôler les propriétés présentes dans les volets de fenêtre Application, Ressources, Paramètres, Chemins d'accès des références et Signature de la page Propriétés des projets Visual C# et Visual J#. 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# et Visual J# 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.

Remarque :

Selon vos paramètres actifs ou votre édition, les boîtes de dialogue et les commandes de menu que vous voyez peuvent différer de celles qui sont décrites dans l'aide. Ces procédures ont été développées avec les paramètres de développement généraux actifs. Pour modifier vos paramètres, choisissez Importation et exportation de paramètres dans le menu Outils. 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 sur l'onglet .NET. Ensuite, sélectionnez VSLangProj, VSLangProj2 et VSLangProj80, puis cliquez sur OK.

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

    using VSLangProj;
    using VSLangProj2;
    using VSLangProj80;
    
  4. Ajoutez l'appel de méthode suivant à la méthode OnConnection.

    _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#, Visual J#, 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);
        }
    }
    

    La méthode VSProjectProperties définit et obtient la propriété AssemblyName en la passant en tant que 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#, Visual J# 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 programme.

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 System.Windows.Forms;
using VSLangProj;
using VSLangProj2;
using VSLangProj80;
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#, Visual J#, 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 VSLangProj
Imports VSLangProj2
Imports VSLangProj80

    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#, Visual J#, 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

Concepts

Propriétés de projet

Autres ressources

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