Utilizar un atributo personalizado del registro para registrar una extensión
En algunos casos puede ser necesario crear un atributo del nuevo registro para la extensión. Puede usar los atributos del registro para agregar las nuevas claves del Registro o agregar nuevos valores a las claves existentes. El nuevo atributo debe derivar de RegistrationAttribute, y debe invalidar el Register y los métodos de Unregister .
crear un atributo personalizado
El código siguiente muestra cómo crear un atributo del nuevo registro.
[AttributeUsage(AttributeTargets.Class, Inherited = true, AllowMultiple = false)]
public class CustomRegistrationAttribute : RegistrationAttribute
{
}
AttributeUsageAttribute se utiliza en clases de atributos para especificar el elemento de programa (clase, método, etc.). al que el atributo pertenece, si puede utilizar más de una vez, y si se puede heredar.
Crear una clave del Registro
En el código siguiente, el atributo personalizado crea una subclave personalizada de clave para el Paquete se está registrando que.
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");
}
Crear un valor En New una clave del Registro Existente
Puede agregar valores personalizados a una clave existente. El código siguiente muestra cómo agregar un nuevo valor en una clave del registro de 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");
}