Partager via


Prise en charge des propriétés de projet et de configuration

La fenêtre de Propriétés dans l'environnement de développement intégré (IDE) de (IDE) Visual Studio peut afficher les propriétés de projet et de configuration. Vous pouvez fournir une page de propriétés de votre propre type de projet afin que l'utilisateur puisse définir les propriétés de votre application.

En sélectionnant un nœud de projet dans Explorateur de solutions puis en cliquant sur Propriétés dans le menu de Projet , vous pouvez ouvrir une boîte de dialogue qui inclut les propriétés de projet et de configuration. Dans Visual C# et Visual Basic, et le projet types dérivés de ces langages, cette boîte de dialogue apparaît comme une page à onglets de Général, Environnement, boîte de dialogue Options. Pour plus d'informations, consultez Walkthrough: Exposing Project and Configuration Properties.

Managed package pour les projets (MPFProj) fournit des classes d'assistance pour créer et gérer le nouveau système de projet. Vous pouvez rechercher l'instruction de code source et de compilation dans MPF for Projects - Visual Studio 2010.

Persistance des propriétés du projet et de configuration

Les propriétés de projet et de configuration sont rendues persistantes dans un fichier projet qui contient une extension de nom de fichier associée au type de projet, par exemple, .csproj, .vbproj, et .myproj. Les projets dans un langage utilisent en général un fichier modèle pour générer le fichier projet. Toutefois, il existe réellement plusieurs façons d'associer des types et des modèles de projet. Pour plus d'informations, consultez Visual Studio Templates et Description du répertoire de modèle (. Fichiers Vsdir).

Les propriétés de projet et de configuration sont créées en ajoutant des éléments au fichier modèle. Ces propriétés sont ensuite disponibles à tout projet créé à l'aide de le type de projet qui utilise ce modèle. les projets csprcs et le MPFProj les deux utilisent le schéma de MSBuild pour les fichiers modèles. Ces fichiers ont une section PropertyGroup pour chaque configuration. Les propriétés des projets sont généralement persistantes dans la première section PropertyGroup, qui possède un argument de configuration défini une chaîne nulle.

Le code suivant indique le début d'un fichier projet de base de MSBuild.

<Project MSBuildVersion="2.0" DefaultTargets="Build" xmlns="https://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
    <Name>SomeProjectSix</Name>
    <SchemaVersion>2.0</SchemaVersion>
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)' == 'Debug' ">
    <Optimize>false</Optimize>
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)' == 'Release' ">
    <Optimize>true</Optimize>

dans ce fichier projet, <Name> et <SchemaVersion> sont des propriétés de projet, et <Optimize> est une propriété de configuration.

Il est de la responsabilité du projet de rendre les propriétés de projet et de configuration du fichier projet.

Notes

Un projet peut optimiser la persistance de la persistance uniquement les valeurs de propriété qui diffèrent de leurs valeurs par défaut.

Prise en charge des propriétés de projet et de configuration

La classe d' Microsoft.VisualStudio.Package.SettingsPage implémente des pages de propriétés du projet et de configuration. L'implémentation par défaut d' SettingsPage offre des propriétés publiques à un utilisateur dans une grille de propriétés générique. La méthode d' Microsoft.VisualStudio.Package.HierarchyNode.GetPropertyPageGuids sélectionne des classes dérivées d' SettingsPage pour les grilles de propriété du projet. La méthode d' Microsoft.VisualStudio.Package.ProjectNode.GetConfigPropertyPageGuids sélectionne des classes dérivées d' SettingsPage pour les grilles des propriétés de configuration. Votre type de projet doit substituer ces méthodes pour sélectionner les pages de propriétés appropriées.

La classe d' SettingsPage et la classe d' Microsoft.VisualStudio.Package.ProjectNode offrent ces méthodes pour rendre les propriétés de projet et de configuration :

  • Microsoft.VisualStudio.Package.ProjectNode.GetProjectProperty et Microsoft.VisualStudio.Package.ProjectNode.SetProjectProperty persistantes les propriétés du projet.

  • Microsoft.VisualStudio.Package.SettingsPage.GetConfigProperty et Microsoft.VisualStudio.Package.SettingsPage.SetConfigProperty persistantes les propriétés de configuration.

    Notes

    Les implémentations des classes d' Microsoft.VisualStudio.Package.SettingsPage et d' Microsoft.VisualStudio.Package.ProjectNode utilisent les méthodes d' Microsoft.Build.BuildEngine (MSBuild) pour obtenir et définir les propriétés de projet et de configuration du fichier projet.

La classe que vous dérivez d' SettingsPage doit implémenter Microsoft.VisualStudio.Package.SettingsPage.ApplyChanges et Microsoft.VisualStudio.Package.SettingsPage.BindProperties pour rendre persistantes les propriétés de projet ou de configuration du fichier projet.

ProvideObjectAttribute et chemin d'accès au Registre

Les classes dérivées d' SettingsPage sont conçues pour être partagées entre les VSPackages. Pour permettre à un VSPackage crée une classe dérivée d' SettingsPage, ajoutez Microsoft.VisualStudio.Shell.ProvideObjectAttribute à une classe dérivée d' Microsoft.VisualStudio.Shell.Package.

<ProvideObject(GetType(MyProjectPropertyPage))> _ 
<Guid("e815d8ad-49bf-427d-99c8-009db3e56ab9")> _
Public Class MyPackage
    Inherits Package
[ProvideObject(typeof(MyProjectPropertyPage))]
[Guid("e815d8ad-49bf-427d-99c8-009db3e56ab9")]
public sealed class MyPackage : Package

Le VSPackage auquel l'attribut est attaché est sans importance. Lorsqu'un VSPackage est enregistré avec Visual Studio, l'identificateur de classe (CLSID) de tout objet qui peut être créé est enregistré afin qu'un appel à l' CreateInstance puisse le créer.

Le chemin d'accès au Registre d'un objet qui peut être créé est déterminé en combinant UserRegistryRoot, le mot, le CLSID, et le GUID du type d'objet. Si la classe d' MyProjectPropertyPage a un GUID de 3c693da2-5bca-49b3-bd95-ffe0a39dd723 {} et l'UserRegistryRoot est \Software\Microsoft\VisualStudio\8.0Exp, then the registry path would be HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\8.0Exp\CLSID HKEY_CURRENT_USER \ {3c693da2-5bca-49b3-bd95-ffe0a39dd723}.

Attributs et mise en page de propriétés du projet et de configuration

CategoryAttribute, DisplayNameAttribute, et les attributs d' DescriptionAttribute déterminent la disposition, étiqueter, et la description des propriétés de projet et de configuration dans une page de propriétés générique. ces attributs déterminent la catégorie, le nom complet, et la description de l'option, respectivement.

Notes

Des attributs, le SRCategory, le LocDisplayName, et le SRDescription d'équivalent, ressources de type chaîne en utiliser pour la localisation et sont définis dans MPF for Projects - Visual Studio 2010.

Prenons le fragment de code suivant :

Private _myConfigProp As String 
Private _isDirty As Boolean 

Public Property IsDirty As Boolean 
    Get 
        Return _isDirty
    End Get 
    Set(ByVal value As Boolean)
        _isDirty = value
    End Set 
End Property

<Category("My Category")> _
<DisplayName("My Config Property")> _
<Description("My Description")> _
Public Property MyConfigProp() As String 
    Get 
        Return _myConfigProp
    End Get 
    Set(ByVal value As String)
        _myConfigProp = value
        IsDirty = True 
    End Set 
End Property
public bool IsDirty { get; set; }
private string myConfigProp;

[Category("My Category")]
[DisplayName("My Config Property")]
[Description("My Description")]
public string MyConfigProp
{
    get { return myConfigProp; }
    set { myConfigProp = value; IsDirty = true; }
}

La propriété configuration d' MyConfigProp apparaît sur la page de propriétés de configuration sous ma propriété de configuration dans la catégorie, ma catégorie. Si l'option est sélectionnée, la description, Description, apparaît dans le panneau de description.

Voir aussi

Tâches

Comment : Ajouter et supprimer des pages de propriétés

Concepts

Description du répertoire de modèle (. Fichiers Vsdir)

Autres ressources

Walkthrough: Exposing Project and Configuration Properties

État d'un VSPackage

Projets (kit de développement Visual Studio SDK)

Visual Studio Templates