VSpackage を登録および登録解除する

属性を使用して VSPackage を登録しますが、

VSPackage を登録する

属性を使用して、マネージド VSPackage の登録を制御できます。 すべての登録情報は、.pkgdef ファイルに含まれています。 ファイル ベースの登録の詳細については、「CreatePkgDef ユーティリティ」を参照してください。

次のコードは、標準の登録属性を使用して VSPackage を登録する方法を示しています。

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

拡張機能の登録を解除する

さまざまな VSPackage を試していて、実験用インスタンスから削除する必要がある場合は、Reset コマンドを実行するだけで済みます。 コンピューターのスタートページで [Visual Studio の実験用インスタンスをリセット] を見つけるか、コマンド ラインから次のコマンドを実行します。

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

Visual Studio の開発インスタンスにインストールした拡張機能をアンインストールする場合は、[ツール]>[拡張機能とアップデート] に移動し、拡張機能を見つけて、[アンインストール] をクリックします。

何らかの理由で、拡張機能のアンインストールでこれらの方法のいずれも成功しない場合は、次のようにコマンド ラインから VSPackage アセンブリの登録を解除できます。

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

カスタム登録属性を使用して拡張機能を登録する

場合によっては、拡張機能の新しい登録属性を作成する必要があります。 登録属性を使用して、新しいレジストリ キーを追加したり、既存のキーに新しい値を追加したりすることができます。 新しい属性は RegistrationAttribute から派生する必要があり、RegisterUnregister メソッドをオーバーライドする必要があります。

カスタム属性を作成する

新しい登録属性を作成する方法を次のコードに示します。

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

AttributeUsageAttribute は、属性が関連するプログラム要素 (クラス、メソッドなど)、複数回使用できるかどうか、継承できるかどうかを指定するために属性クラスで使用されます。

レジストリ キーを作成する

次のコードでは、カスタム属性によって、登録されている VSPackage のキーの下にカスタム サブキーが作成されます。

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

既存のレジストリ キーの下に新しい値を作成する

既存のキーにカスタム値を追加できます。 次のコードは、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");
}