Share via


Inscrire et annuler l’inscription de VSPackages

Vous utilisez des attributs pour inscrire un VSPackage, mais

Inscrire un VSPackage

Vous pouvez utiliser des attributs pour contrôler l’inscription des VSPackages managés. Toutes les informations d’inscription sont contenues dans un fichier .pkgdef . Pour plus d’informations sur l’inscription basée sur les fichiers, consultez l’utilitaire CreatePkgDef.

Le code suivant montre comment utiliser les attributs d’inscription standard pour inscrire votre VSPackage.

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

Désinscrire une extension

Si vous avez expérimenté beaucoup de VSPackages différents et que vous souhaitez les supprimer de l’instance expérimentale, vous pouvez simplement exécuter la commande Réinitialiser . Recherchez Réinitialiser l’instance expérimentale Visual Studio sur la page de démarrage de votre ordinateur ou exécutez cette commande à partir de la ligne de commande :

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

Si vous souhaitez désinstaller une extension que vous avez installée sur votre instance de développement de Visual Studio, accédez à Extensions d’outils>et Mises à jour, recherchez l’extension, puis cliquez sur Désinstaller.

Si, pour une raison quelconque, aucune de ces méthodes ne réussit à désinstaller l’extension, vous pouvez annuler l’inscription de l’assembly VSPackage à partir de la ligne de commande comme suit :

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

Utiliser un attribut d’inscription personnalisé pour inscrire une extension

Dans certains cas, vous devrez peut-être créer un nouvel attribut d’inscription pour votre extension. Vous pouvez utiliser des attributs d’inscription pour ajouter de nouvelles clés de Registre ou pour ajouter de nouvelles valeurs à des clés existantes. Le nouvel attribut doit dériver de RegistrationAttribute, et il doit remplacer les méthodes et Unregister les Register méthodes.

Création d’un attribut personnalisé

Le code suivant montre comment créer un attribut d’inscription.

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

Il AttributeUsageAttribute est utilisé sur les classes d’attributs pour spécifier l’élément program (classe, méthode, etc.) auquel appartient l’attribut, s’il peut être utilisé plusieurs fois et s’il peut être hérité.

Créer une clé de Registre

Dans le code suivant, l’attribut personnalisé crée une sous-clé personnalisée sous la clé du VSPackage en cours d’inscription.

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

Créer une valeur sous une clé de Registre existante

Vous pouvez ajouter des valeurs personnalisées à une clé existante. Le code suivant montre comment ajouter une nouvelle valeur à une clé d’inscription 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");
}