Freigeben über


Unterstützung für Projekt- und Konfigurationseigenschaften

Das Eigenschaftenfenster in der integrierten Entwicklungsumgebung (IDE) von Visual Studio kann Projekt- und Konfigurationseigenschaften anzeigen. Sie können eine Eigenschaftenseite für Ihren eigenen Projekttyp bereitstellen, damit der Benutzer Eigenschaften für Ihre Anwendung festlegen kann.

Wenn Sie in Projektmappen-Explorer einen Projektknoten auswählen und dann im Menü "Projekt" auf "Eigenschaften" klicken, können Sie ein Dialogfeld öffnen, das Projekt- und Konfigurationseigenschaften enthält. In Visual C# und Visual Basic und von diesen Sprachen abgeleiteten Projekttypen wird dieses Dialogfeld als Registerkartenseite im Dialogfeld "Allgemein", "Umgebung", "Optionen" angezeigt. Weitere Informationen finden Sie unter "Not in Build: Walkthrough: Exposing Project and Configuration Properties (C#)".

Das Verwaltete Paketframework für Projekte (MPFProj) stellt Hilfsklassen zum Erstellen und Verwalten eines neuen Projektsystems bereit. Sie finden die Quellcode- und Kompilierungsanweisungen unter MPF für Projekte – Visual Studio 2013.

Persistenz von Projekt- und Konfigurationseigenschaften

Projekt- und Konfigurationseigenschaften werden in einer Projektdatei gespeichert, die eine Dateierweiterung hat, die dem Projekttyp zugeordnet ist, z. B. CSPROJ, VBPROJ und MYPROJ. Sprachprojekte verwenden in der Regel eine Vorlagendatei, um die Projektdatei zu generieren. Es gibt jedoch mehrere Möglichkeiten, Projekttypen und Vorlagen zuzuordnen. Weitere Informationen finden Sie unter Template Directory Description (. Vsdir) Dateien.

Projekt- und Konfigurationseigenschaften werden durch Hinzufügen von Elementen zur Vorlagendatei erstellt. Diese Eigenschaften sind dann für jedes Projekt verfügbar, das mithilfe des Projekttyps erstellt wird, der diese Vorlage verwendet. Visual C#-Projekte und MPFProj verwenden beide das Schema "Nicht in Build: MSBuild Overview " für Vorlagendateien. Diese Dateien verfügen über einen PropertyGroup-Abschnitt für jede Konfiguration. Eigenschaften von Projekten werden in der Regel im ersten PropertyGroup-Abschnitt beibehalten, der ein Konfigurationsargument auf eine NULL-Zeichenfolge festgelegt hat.

Der folgende Code zeigt den Start einer einfachen MSBuild-Projektdatei.

<Project MSBuildVersion="2.0" DefaultTargets="Build" xmlns="http://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>

In dieser Projektdatei <Name> sind <SchemaVersion> Projekteigenschaften und <Optimize> eine Konfigurationseigenschaft.

Es liegt in der Verantwortung des Projekts, die Projekt- und Konfigurationseigenschaften der Projektdatei beizubehalten.

Hinweis

Ein Projekt kann die Persistenz optimieren, indem nur Eigenschaftswerte beibehalten werden, die sich von ihren Standardwerten unterscheiden.

Unterstützung für Projekt- und Konfigurationseigenschaften

Die Microsoft.VisualStudio.Package.SettingsPage Klasse implementiert Projekt- und Konfigurationseigenschaftenseiten. Die Standardimplementierung von SettingsPage öffentlichen Eigenschaften für einen Benutzer in einem generischen Eigenschaftenraster. Die Microsoft.VisualStudio.Package.HierarchyNode.GetPropertyPageGuids Methode wählt Klassen aus, die für SettingsPage Projekteigenschaftenraster abgeleitet sind. Die Microsoft.VisualStudio.Package.ProjectNode.GetConfigPropertyPageGuids Methode wählt Klassen aus, die für SettingsPage Konfigurationseigenschaftenraster abgeleitet sind. Der Projekttyp sollte diese Methoden überschreiben, um die entsprechenden Eigenschaftenseiten auszuwählen.

Die SettingsPage Klasse und die Microsoft.VisualStudio.Package.ProjectNode Klasse bieten diese Methoden zum Speichern von Projekt- und Konfigurationseigenschaften:

  • Microsoft.VisualStudio.Package.ProjectNode.GetProjectProperty und Microsoft.VisualStudio.Package.ProjectNode.SetProjectProperty projekteigenschaften beibehalten.

  • Microsoft.VisualStudio.Package.SettingsPage.GetConfigProperty und Microsoft.VisualStudio.Package.SettingsPage.SetConfigProperty speichern Sie Konfigurationseigenschaften.

    Hinweis

    Die Implementierungen und Microsoft.VisualStudio.Package.SettingsPage Microsoft.VisualStudio.Package.ProjectNode Klassen verwenden die Microsoft.Build.BuildEngine Methoden (MSBuild), um Projekt- und Konfigurationseigenschaften aus der Projektdatei abzurufen und festzulegen.

    Die von Ihnen abgeleitete SettingsPage Klasse muss Projekt- oder Konfigurationseigenschaften der Projektdatei implementieren Microsoft.VisualStudio.Package.SettingsPage.ApplyChanges und Microsoft.VisualStudio.Package.SettingsPage.BindProperties beibehalten.

ProvideObjectAttribute und Registrierungspfad

Abgeleitete SettingsPage Klassen sind für die gemeinsame Nutzung über VSPackages ausgelegt. Damit ein VSPackage eine von dieser abgeleitete SettingsPageKlasse erstellen kann, fügen Sie eine Microsoft.VisualStudio.Shell.ProvideObjectAttribute zu einer abgeleiteten Microsoft.VisualStudio.Shell.PackageKlasse hinzu.

[ProvideObject(typeof(MyProjectPropertyPage))]
[Guid("e815d8ad-49bf-427d-99c8-009db3e56ab9")]
public sealed class MyPackage : Package

Die VSPackage, an die das Attribut angefügt ist, ist unwichtig. Wenn ein VSPackage mit Visual Studio registriert wird, wird die Klassen-ID (CLSID) eines objekts registriert, das erstellt werden kann, damit ein Aufruf erstellt CreateInstance werden kann.

Der Registrierungspfad eines Objekts, das erstellt werden kann, wird durch Die Kombination UserRegistryRoot, das Wort, die CLSID und die GUID des Objekttyps bestimmt. Wenn MyProjectPropertyPage die Klasse eine GUID von {3c693da2-5bca-49b3-bd95-ffe0a39dd723} hat und userRegistryRoot HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\8.0Exp ist, dann wäre der Registrierungspfad HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\8.0Exp\CLSID\{3c693da2-5bca-49b3-bd95-ffe0a39dd723}.

Attribute und Layout von Project- und Configuration-Eigenschaften

Die CategoryAttributeAttribute DisplayNameAttributeund DescriptionAttribute Die Attribute bestimmen das Layout, die Bezeichnung und die Beschreibung von Projekt- und Konfigurationseigenschaften auf einer generischen Eigenschaftenseite. Diese Attribute bestimmen die Kategorie, den Anzeigenamen und die Beschreibung der Option.

Hinweis

Gleichwertige Attribute, SRCategory, LocDisplayName und SRDescription, verwenden Zeichenfolgenressourcen für die Lokalisierung und werden in MPF für Projekte – Visual Studio 2013 definiert.

Betrachten Sie das folgende -Codefragment:

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; }
}

Die MyConfigProp Konfigurationseigenschaft wird auf der Konfigurationseigenschaftsseite als My Config-Eigenschaft in der Kategorie " Meine Kategorie" angezeigt. Wenn die Option ausgewählt ist, wird die Beschreibung " Meine Beschreibung" im Beschreibungsbereich angezeigt.