Partager via


Comment : accéder aux propriétés de configuration 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é, la configuration de génération et la configuration de débogage.

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 répertoriées dans CSharpProjectConfigurationProperties4, VBProjectConfigurationProperties4, JSharpProjectConfigurationProperties3 et ProjectConfigurationProperties3 vous permettent de contrôler les propriétés de projet présentes dans les volets de fenêtre Générer (Compiler pour les projets Visual Basic) et Propriétés de débogage de la page Propriétés de la configuration active.

Vous pouvez également choisir une configuration différente, autre que celle actuellement active, en accédant à l'objet ConfigurationManager. Pour plus d'informations, consultez Comment : créer des configurations de génération de solution et de projet.

Les propriétés de configuration des projets Visual C# et Visual J# sont définies respectivement dans CSharpProjectConfigurationProperties4 et JSharpProjectConfigurationProperties3. Les propriétés CodePage, DisableLangXtns, JCPA et SecureScoping sont spécifiques aux projets Visual J# uniquement. Les propriétés ErrorReport et LanguageVersion sont spécifiques aux projets Visual C# uniquement. Les autres propriétés présentes dans CSharpProjectConfigurationProperties3 et JSharpProjectConfigurationProperties3 sont identiques aux propriétés présentes dans ProjectConfigurationProperties3.

Ces propriétés de configuration sont inaccessibles par un cast direct d'un objet Property en un objet CSharpProjectConfigurationProperties3, JSharpProjectConfigurationProperties3 ou ProjectConfigurationProperties3. Au lieu de cela, vous pouvez accéder à ces propriétés en passant le nom de l'élément de configuration sous forme de chaîne, comme indiqué ci-dessous :

    EnvDTE.Project proj;
    EnvDTE.Configuration config;
    EnvDTE.Properties configProps;
    EnvDTE.Property prop;
    proj = DTE.Solution.Projects.Item(1);
    config = proj.ConfigurationManager.ActiveConfiguration;
    configProps = config.Properties;
    prop = configProps.Item("EnableSQLServerDebugging")

Ce code accède à la propriété CSharpProjectConfigurationProperties3.EnableSQLServerDebugging, JSharpProjectConfigurationProperties3.EnableSQLServerDebugging ou ProjectConfigurationProperties3.EnableSQLServerDebugging selon que la variable proj définit un projet Visual C#, Visual J# ou Visual Basic.

En effet, les propriétés de configuration définies dans CSharpProjectConfigurationProperties3, JSharpProjectConfigurationProperties3 ou ProjectConfigurationProperties3 constituent une liste de références aux propriétés de configuration disponibles pour les projets spécifiques accessibles en tant qu'éléments de propriété de configuration de projet, par le biais de la collection Properties.

Les étapes ci-dessous détaillent la manière d'accéder par programme à ces propriétés de configuration de la configuration actuellement active 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 de configuration 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 System.Windows.Forms, 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;
    using VSLangProj90;
    using System.Windows.Forms;
    
  4. Ajoutez l'appel de fonction suivant à la fonction OnConnection.

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

    public void VSProjectConfigProperties(DTE2 dte)
    {
        try
        {
            // Open a Visual C#, Visual J#, or Visual Basic project
            // before running this add-in.
            Project project;
            Configuration config;
            Properties configProps;
            Property prop;
            project = _applicationObject.Solution.Projects.Item(1);
            config = project.ConfigurationManager.ActiveConfiguration;
            configProps = config.Properties;
            prop = configProps.Item("PlatformTarget");
            MessageBox.Show("The platform target for this project is: "
     + prop.Value.ToString());
            prop = configProps.Item("WarningLevel");
            MessageBox.Show
    ("The warning level for this project is set to: " 
    + prop.Value.ToString());
            MessageBox.Show("Changing the warning level to 3...");
            prop.Value = "3";
            MessageBox.Show
    ("The warning level for this project is now set to: " 
    + prop.Value.ToString());
            if (project.Kind == PrjKind.prjKindCSharpProject)
            {
                MessageBox.Show("The project is a Visual C# Project");
                prop = configProps.Item("LanguageVersion");
                MessageBox.Show("The language version value is : " 
    + prop.Value.ToString());
                MessageBox.Show("Setting the language version to 
    ISO-1");
                prop.Value = "ISO-1";
                MessageBox.Show("The language version value is now: " 
    + prop.Value.ToString());
            }
            if (project.Kind == PrjKind2.prjKindVJSharpProject)
            {
                MessageBox.Show("The project is a Visual J# Project");
                prop = configProps.Item("CodePage");
                MessageBox.Show("The code page value is : " 
    + prop.Value.ToString());
                MessageBox.Show
    ("Setting the code page value to my code page");
                prop.Value = "my code page";
                MessageBox.Show("The code page value is now: " 
    + prop.Value.ToString());
            }
        }
        catch(Exception ex)
        {
            MessageBox.Show(ex.Message);
        }
    }
    

    La méthode VSProjectConfigProperties obtient et affiche la valeur de propriété PlatformTarget. Celle-ci définit et obtient la propriété WarningLevel. Si le projet est un projet Visual C#, la méthode VSProjectConfigProperties définit et obtient la propriété LanguageVersion. Si le projet est un projet Visual J#, la méthode définit et obtient la propriété CodePage.

  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 niveau d'avertissement en cliquant sur Propriétés dans le menu Projet, puis sélectionnez l'onglet Générer dans la fenêtre Propriétés.

    Le champ Niveau d'avertissement reflète la modification apportée par programme.

  10. Pour valider le paramètre de version de langage pour un projet Visual C#, dans le volet Générer de la fenêtre Propriétés, cliquez sur Avancé.

    Le champ Version du langage de la boîte de dialogue Paramètres de génération avancés reflète la modification que votre complément a apportée.

  11. Pour valider la modification apportée au paramètre de page de code d'un projet Visual J#, dans le volet Générer de la fenêtre Propriétés, cliquez sur Avancé.

    Le champ Page de codes de la boîte de dialogue Paramètres de génération avancés reflète la modification apportée à cette propriété.

Exemple

L'exemple suivant est un complément Visual Studio de base qui montre comment accéder à des propriétés destinées à un type de projet spécifique à l'aide de l'automation dans Visual Studio.

using System;
using Extensibility;
using EnvDTE;
using EnvDTE80;
using System.Windows.Forms;
using VSLangProj;
using VSLangProj2;
using VSLangProj80;
public void OnConnection(object application, 
ext_ConnectMode connectMode, object addInInst, ref Array custom)
{
    _applicationObject = (DTE2)application;
    _addInInstance = (AddIn)addInInst;
    VSProjectConfigProperties(_applicationObject);
}
public void VSProjectConfigProperties(DTE2 dte)
{
    try
    {
        // Open a Visual C#, Visual J#, or Visual Basic project
        // before running this add-in.
        Project project;
        Configuration config;
        Properties configProps;
        Property prop;
        project = _applicationObject.Solution.Projects.Item(1);
        config = project.ConfigurationManager.ActiveConfiguration;
        configProps = config.Properties;
        prop = configProps.Item("PlatformTarget");
        MessageBox.Show("The platform target for this project is: 
" + prop.Value.ToString());
        prop = configProps.Item("WarningLevel");
        MessageBox.Show
("The warning level for this project is set to: " 
+ prop.Value.ToString());
        MessageBox.Show("Changing the warning level to 3...");
        prop.Value = "3";
        MessageBox.Show
("The warning level for this project is now set to: " 
+ prop.Value.ToString());
        if (project.Kind == PrjKind.prjKindCSharpProject)
        {
            MessageBox.Show("The project is a Visual C# Project");
            prop = configProps.Item("LanguageVersion");
            MessageBox.Show("The language version value is : " 
+ prop.Value.ToString());
            MessageBox.Show("Setting the language version to ISO-1");
            prop.Value = "ISO-1";
            MessageBox.Show("The language version value is now: " 
+ prop.Value.ToString());
        }
        if (project.Kind == PrjKind2.prjKindVJSharpProject)
        {
            MessageBox.Show("The project is a Visual J# Project");
            prop = configProps.Item("CodePage");
            MessageBox.Show("The code page value is : " 
+ prop.Value.ToString());
            MessageBox.Show
("Setting the code page value to my code page");
            prop.Value = "my code page";
            MessageBox.Show("The code page 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)
    VSProjectConfigProperties(_applicationObject)
End Sub
Sub VSProjectConfigProperties(ByVal dte As DTE2)
    ' Open a Visual C#, Visual J#, or Visual Basic project
    ' before running this add-in.
    Try
        Dim project As Project
        Dim config As Configuration
        Dim configProps As Properties
        Dim prop As [Property]
        project = _applicationObject.Solution.Projects.Item(1)
        config = project.ConfigurationManager.ActiveConfiguration
        configProps = config.Properties
        prop = configProps.Item("PlatformTarget")
        MsgBox("The platform target for this project is: "  _
        & prop.Value.ToString())
        prop = configProps.Item("WarningLevel")
        MsgBox("The warning level for this project is set to: "  _
        & prop.Value.ToString())
        MsgBox("Changing the warning level to 3...")
        prop.Value = "3"
        MsgBox("The warning level for this project is now set to: " _
        & prop.Value.ToString())
        If project.Kind = PrjKind.prjKindCSharpProject Then
            MsgBox("The project is a Visual C# Project")
            prop = configProps.Item("LanguageVersion")
            MsgBox("The language version value is : "  _
            & prop.Value.ToString())
            MsgBox("Setting the language version to ISO-1")
            prop.Value = "ISO-1"
            MsgBox("The language version value is now: "  _
            & prop.Value.ToString())
        End If
        If project.Kind = PrjKind2.prjKindVJSharpProject Then
            MsgBox("The project is a Visual J# Project")
            prop = configProps.Item("CodePage")
            MsgBox("The code page value is : "  _
            & prop.Value.ToString())
            MsgBox("Setting the code page value to my code page")
            prop.Value = "my code page"
            MsgBox("The code page 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