Condividi tramite


Registrare e annullare la registrazione di PACCHETTI VSPackage

Gli attributi vengono usati per registrare un VSPackage, ma

Registrare un pacchetto VSPackage

È possibile usare gli attributi per controllare la registrazione di pacchetti VSPackage gestiti. Tutte le informazioni di registrazione sono contenute in un file con estensione pkgdef . Per altre informazioni sulla registrazione basata su file, vedere Utilità CreatePkgDef.

Il codice seguente illustra come usare gli attributi di registrazione standard per registrare il pacchetto VSPackage.

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

Annullare la registrazione di un'estensione

Se si sta sperimentando un sacco di VSPackage diversi e si vuole rimuoverli dall'istanza sperimentale, è sufficiente eseguire il comando Reset . Cercare Reimpostare l'istanza sperimentale di Visual Studio nella pagina iniziale del computer oppure eseguire questo comando dalla riga di comando:

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

Per disinstallare un'estensione installata nell'istanza di sviluppo di Visual Studio, passare a Strumenti>estensioni e Aggiornamenti, trovare l'estensione e fare clic su Disinstalla.

Se per qualche motivo nessuno di questi metodi riesce a disinstallare l'estensione, è possibile annullare la registrazione dell'assembly VSPackage dalla riga di comando come indicato di seguito:

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

Usare un attributo di registrazione personalizzato per registrare un'estensione

In alcuni casi potrebbe essere necessario creare un nuovo attributo di registrazione per l'estensione. È possibile usare gli attributi di registrazione per aggiungere nuove chiavi del Registro di sistema o per aggiungere nuovi valori alle chiavi esistenti. Il nuovo attributo deve derivare da RegistrationAttributee deve eseguire l'override dei Register metodi e Unregister .

Creare un attributo personalizzato

Il codice seguente illustra come creare un nuovo attributo di registrazione.

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

Viene AttributeUsageAttribute utilizzato nelle classi di attributi per specificare l'elemento program (classe, metodo e così via) a cui l'attributo è relativo, se può essere usato più volte e se può essere ereditato.

Creare una chiave del Registro di sistema

Nel codice seguente, l'attributo personalizzato crea una sottochiave personalizzata sotto la chiave per il VSPackage in fase di registrazione.

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

Creare un nuovo valore in una chiave del Registro di sistema esistente

È possibile aggiungere valori personalizzati a una chiave esistente. Il codice seguente illustra come aggiungere un nuovo valore a una chiave di registrazione VSPackage.

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