Freigeben über


Registrieren und Aufheben der Registrierung von VSPackages

Sie verwenden Attribute, um ein VSPackage-Element zu registrieren, aber

Registrieren eines VSPackage-Pakets

Mithilfe von Attributen können Sie die Registrierung von verwalteten VSPackages steuern. Alle Registrierungsinformationen sind in einer PKGDEF-Datei enthalten. Weitere Informationen zur dateibasierten Registrierung finden Sie im Hilfsprogramm CreatePkgDef.

Der folgende Code zeigt, wie Sie die Standardregistrierungsattribute verwenden, um Ihre VSPackage zu registrieren.

[PackageRegistration(UseManagedResourcesOnly = true)]
[Guid("0B81D86C-0A85-4f30-9B26-DD2616447F95")]
public sealed class BasicPackage : Package
{
    // ...
}

Aufheben der Registrierung einer Erweiterung

Wenn Sie mit vielen verschiedenen VSPackages experimentieren und sie aus der experimentellen Instanz entfernen möchten, können Sie einfach den Befehl "Zurücksetzen " ausführen. Suchen Sie auf der Startseite Ihres Computers nach "Visual Studio Experimental Instance zurücksetzen", oder führen Sie diesen Befehl über die Befehlszeile aus:

<location of Visual Studio 2015 install>\"Microsoft Visual Studio 14.0\VSSDK\VisualStudioIntegration\Tools\Bin\CreateExpInstance.exe" /Reset /VSInstance=14.0 /RootSuffix=Exp

Wenn Sie eine Erweiterung deinstallieren möchten, die Sie in Ihrer Entwicklungsinstanz von Visual Studio installiert haben, wechseln Sie zu Tools-Erweiterungen>und -Updates, suchen Sie die Erweiterung, und klicken Sie auf "Deinstallieren".

Wenn aus irgendeinem Grund keine dieser Methoden beim Deinstallieren der Erweiterung erfolgreich ist, können Sie die Registrierung der VSPackage-Assembly über die Befehlszeile wie folgt aufheben:

<location of Visual Studio 2015 install>\"Microsoft Visual Studio 14.0\VSSDK\VisualStudioIntegration\Tools\Bin\regpkg" /unregister <pathToVSPackage assembly>

Verwenden eines benutzerdefinierten Registrierungsattributes zum Registrieren einer Erweiterung

In bestimmten Fällen müssen Sie möglicherweise ein neues Registrierungsattribute für Ihre Erweiterung erstellen. Sie können Registrierungsattribute verwenden, um neue Registrierungsschlüssel hinzuzufügen oder vorhandenen Schlüsseln neue Werte hinzuzufügen. Das neue Attribut muss von RegistrationAttributedem abgeleitet werden, und es muss die und Unregister die Register Methoden überschreiben.

Erstellen eines benutzerdefinierten Attributs

Der folgende Code zeigt, wie Sie ein neues Registrierungsattribute erstellen.

[AttributeUsage(AttributeTargets.Class, Inherited = true, AllowMultiple = false)]
public class CustomRegistrationAttribute : RegistrationAttribute
{
}

Die AttributeUsageAttribute Methode wird für Attributklassen verwendet, um das Programmelement (Klasse, Methode usw.) anzugeben, auf das sich das Attribut bezieht, ob es mehrmals verwendet werden kann und ob es geerbt werden kann.

Erstellen eines Registrierungsschlüssels

Im folgenden Code erstellt das benutzerdefinierte Attribut einen benutzerdefinierten Unterschlüssel unter dem Schlüssel für das zu registrierende VSPackage.In the following code, the custom attribute creates a Custom subkey under the key for the VSPackage that is being registered.

public override void Register(RegistrationAttribute.RegistrationContext context)
{
    Key packageKey = null;
    try
    {
        packageKey = context.CreateKey(@"Packages\{" + context.ComponentType.GUID + @"}\Custom");
        packageKey.SetValue("NewCustom", 1);
    }
    finally
    {
        if (packageKey != null)
            packageKey.Close();
    }
}

public override void Unregister(RegistrationContext context)
{
    context.RemoveKey(@"Packages\" + context.ComponentType.GUID + @"}\Custom");
}

Erstellen eines neuen Werts unter einem vorhandenen Registrierungsschlüssel

Sie können einem vorhandenen Schlüssel benutzerdefinierte Werte hinzufügen. Der folgende Code zeigt, wie Sie einem VSPackage-Registrierungsschlüssel einen neuen Wert hinzufügen.

public override void Register(RegistrationAttribute.RegistrationContext context)
{
    Key packageKey = null;
    try
    {
        packageKey = context.CreateKey(@"Packages\{" + context.ComponentType.GUID + "}");
        packageKey.SetValue("NewCustom", 1);
    }
    finally
    {
        if (packageKey != null)
            packageKey.Close();
    }
}

public override void Unregister(RegistrationContext context)
{
    context.RemoveValue(@"Packages\" + context.ComponentType.GUID, "NewCustom");
}