共用方式為


註冊和取消註冊 VSPackages

您可以使用屬性註冊 VSPackage,但是

註冊 VSPackage

您可以使用屬性來控制 Managed 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在屬性類別上用於指定屬性所屬的程式元素 (class、method 等)、是否可以多次使用,以及是否可以繼承。

建立登錄機碼

在下列程式碼中,自訂屬性會在所註冊之 VSPackage 的機碼下建立 Custom 子機碼。

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