註冊和取消註冊 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,而且必須覆寫 Register 和 Unregister 方法。
建立自訂屬性
下列程式碼展示如何建立新的註冊屬性。
[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");
}