Compartir a través de


tutorial: Mediante el almacén de configuración

Aunque los valores de Visual Studio se conserven normalmente en el registro del sistema, puede desacoplar almacenamiento de valor del registro mediante un almacén de configuración. Mediante el almacén de configuración en lugar de registro simplifica la implementación y promueve seguridad.

Hay dos tipos de valores almacena:

  • Opciones de configuración, que son valores de solo lectura de Visual Studio y de VSPackage. Visual Studio combina valores de todos los archivos conocidos .pkgdef en este almacén.

  • Configuración del usuario, que son valores grabables como los que se muestran en las páginas del cuadro de diálogo de Opciones , páginas de propiedades, y algunos otros cuadros de diálogo. Las extensiones de Visual Studio pueden utilizarlos para el almacenamiento local de pequeñas cantidades de datos.

Este tutorial muestra cómo utilizar ambos tipos de valor almacena.

Crear el proyecto de ejemplo

En esta sección se muestra cómo crear un proyecto básico del almacén de configuración.

Para crear el proyecto de ejemplo

  1. Cree un proyecto denominado SettingsStoragede paquete de Visual Studio .

    Para obtener más información sobre cómo crear un VSPackage administrado, vea tutorial: Crear un comando de menú mediante la plantilla de paquete de Visual Studio.

  2. En la página de Seleccione un lenguaje de programación , seleccione Visual C#.

  3. En la página de Seleccionar opciones del paquete de VS , seleccione Comando de menú.

  4. En la página de Opciones de comando , cambie Nombre de comando a Almacenamiento de valores y Identificador de comando a cmdidSettingsStorage.

  5. En la página de Opciones location de la prueba , desactive las casillas y haga clic en Finalizar.

  6. Presione F5 para ejecutar la instancia experimental de Visual Studio.

  7. En la instancia experimental, en el menú de Herramientas , haga clic Almacenamiento de valores.

    El siguiente mensaje debería mostrarse.

    Microsoft.SettingsStorage.SettingsStoragePackage.MenuItemCallback interior ().

  8. Cierre la instancia experimental.

Hay varias maneras de generar texto de un Paquete. Este tutorial muestra cómo modificar el método de SettingsStoragePackage.MenuItemCallback para mostrar los resultados de cada uno de los siguientes conjuntos de pasos.

Mediante el almacén de configuración

En esta sección se muestra cómo utilizar un SettingsManager y los métodos de SettingsStore para detectar y de la configuración de pantalla.

Para utilizar el almacenamiento de las opciones de configuración

  1. Abra el archivo de SettingsStoragePackage.cs en el editor de código.

  2. Agregue estas líneas al principio del archivo:

    using System.Collections.Generic;
    using Microsoft.VisualStudio.Settings;
    using Microsoft.VisualStudio.Shell.Settings;
    
  3. Agregue estas líneas al inicio del método de MenuItemCallback :

    SettingsManager settingsManager = new ShellSettingsManager(this);
    SettingsStore configurationSettingsStore = settingsManager.GetReadOnlySettingsStore(SettingsScope.Configuration);
    

    Esta acción llama al constructor de #ctor , y pasa una referencia al paquete VSPackage propio como parámetro de IServiceProvider . El constructor devuelve un objeto de SettingsManager . El método de GetReadOnlySettingsStore devuelve un objeto de SettingsStore denominado ConfigurationSettingsStore. Utilice este objeto para leer los valores de configuración.

  4. Agregue estas líneas después de líneas en el paso anterior:

    bool isVisualWebDevInstalled = configurationSettingsStore.CollectionExists("InstalledProducts\\Visual Web Developer");
    string message = "Visual Web Developer Installed: " + isVisualWebDevInstalled;
    

    Esto busca en las opciones de configuración almacenadas para la colección InstalledProducts con Visual Web developer de subcollection. Si se encuentra el subcollection, la cadena de mensaje se establece en “True”; si no, se establece en “False”.

  5. En la llamada MessageBox, reemplace el valor del parámetro “SettingsStorage” con el nombre “mensaje”. El método de MenuItemCallback ahora debería ser similar a este:

    private void MenuItemCallback(object sender, EventArgs e)
    {
      SettingsManager settingsManager = new ShellSettingsManager(this);
      SettingsStore configurationSettingsStore = settingsManager.GetReadOnlySettingsStore(SettingsScope.Configuration);
    
      bool isVisualWebDevInstalled = configurationSettingsStore.CollectionExists("InstalledProducts\\Visual Web Developer");
      string message = "Visual Web Developer Installed: " + isVisualWebDevInstalled;
      IVsUIShell uiShell = (IVsUIShell)GetService(typeof(SVsUIShell));
      Guid clsid = Guid.Empty;
      int result;
    
    Microsoft.VisualStudio.ErrorHandler.ThrowOnFailure(uiShell.ShowMessageBox(0, ref clsid, message, 
    //was "SettingsStorage", 
    //string.Format(CultureInfo.CurrentCulture, 
    //"Inside {0}.MenuItemCallback()", 
    //this.ToString()), string.Empty, 0, 
    //OLEMSGBUTTON.OLEMSGBUTTON_OK,
    //OLEMSGDEFBUTTON.OLEMSGDEFBUTTON_FIRST, 
    //OLEMSGICON.OLEMSGICON_INFO, 0, 
    // false out result));
    }
    
  6. Presione F5 para ejecutar la instancia experimental de Visual Studio.

  7. En la instancia experimental, en el menú de Herramientas , haga clic Almacenamiento de valores.

    Un mensaje debe mostrar y contener texto Visual Web developer instalado: seguido de True o False.

  8. Cierre la instancia experimental.

Visual Studio implementa los valores almacenados en el sistema. Debido a esto, puede utilizar un editor del Registro, por ejemplo, Utilizando, para comprobar la instalación y configuración del usuario.

Para utilizar un editor del Registro para comprobar las opciones de configuración

  1. Abra Regedit.exe u otro editor del Registro.

  2. Navegue a __ENT_DICT_ANYPATHTILLLASTSLASH \ al software \ a Microsoft \ VisualStudio \ 10.0Exp_Config \ InstalledProducts \.

    NotaNota

    Asegúrese de que está examinando la clave que contiene \ 10.0Exp_Config \ y no \ 10.0_Config \.Cuando se ejecuta la instancia experimental de Visual Studio, las opciones de configuración están en la sección “10.0Exp_Config” registro.

  3. Expanda \ Products instalado \ el nodo. Si el mensaje en los pasos anteriores es Visual Web developer instalado: True, después \ Products instalado \ debe contener un nodo de Visual Web developer. Si el mensaje es Visual Web developer instalado: False, después \ Products instalado \ no debe contener ningún nodo de Visual Web developer.

También puede utilizar el método de CollectionExists para determinar si un servicio determinado está instalado. Debe conocer el tipo de la clase de servicio.

Para determinar si un servicio está disponible

  1. En el código, reemplace IsVisualWebDevInstalled e instrucciones de asignación de mensaje con las siguientes líneas.

    string helpServiceGUID = typeof(SVsHelpService).GUID.ToString("B").ToUpper();
    bool hasHelpService = configurationSettingsStore.CollectionExists("Services\\" + helpServiceGUID);
    string message = "Help Service Available: " + hasHelpService;
    

    Esto busca en las opciones de configuración almacenadas para la colección Services que tiene el subcollection denominado por el GUID del servicio. Si se encuentra el subcollection, la cadena de mensaje se establece en “True”; si no, se establece en “False”.

  2. Presione F5 para ejecutar la instancia experimental de Visual Studio.

  3. En la instancia experimental, en el menú de Herramientas , haga clic Almacenamiento de valores.

    Un mensaje debe mostrar y contener texto Servicio de Ayuda disponibles: seguido de True o False. Para comprobar esta configuración, puede utilizar un editor del Registro, como se muestra en los pasos anteriores.

  4. Cierre la instancia experimental.

También puede utilizar los métodos de GetSubCollectionNames y de GetString para enumerar los servicios registrados en el almacén de configuración.

Para enumerar los servicios disponibles

  1. Reemplace el código en los pasos anteriores con las siguientes líneas.

    string message = "First five services:\n";
    IEnumerable<string> collection = configurationSettingsStore.GetSubCollectionNames("Services");
    int n = 0;
    foreach (string service in collection)
    {
        if (n++ == 5) break;
        message += configurationSettingsStore.GetString("Services\\" + service, "Name", "Unknown") + "\n";
    }
    

    La llamada al método de GetSubCollectionNames obtiene los nombres de los miembros de la colección de Servicios. La llamada al método de GetString devuelve los datos de propiedad de Name de cada miembro. Si no existe la propiedad de Name , se devuelve el nombre predeterminado “desconocido”. Los nombres resultantes se anexa a la cadena de mensaje.

  2. Presione F5 para ejecutar la instancia experimental de Visual Studio.

  3. En la instancia experimental, en el menú de Herramientas , haga clic Almacenamiento de valores.

    Un mensaje debe mostrar y contener texto siguiente.

    Cinco primeros servicios:PL/SQLTypeSystemcompilador de Microsoft Visual BasicSTestExecutionServiceservicio de ResX RefactorNotify

    La lista de servicios puede diferir. Para comprobar estos valores, puede utilizar el editor del Registro.

  4. Cierre la instancia experimental.

Puede restaurar las opciones de configuración mediante el procedimiento siguiente.

Para restaurar las opciones de configuración

  1. Haga clic en Iniciar, haga clic en Todos los programas, haga clic en Microsoft Visual Studio 2010 SDK, haga clic en Herramientas, y haga clic en restablezca la instancia de Microsoft Visual Studio 2010 Experimental.

    Una ventana de comandos aparece.

  2. Espere hasta que se devuelve Press any key to continue , y después presione una tecla para cerrar la ventana de comandos.

Mediante el almacén de configuración de usuario

En esta sección se muestra cómo agregar el Bloc de notas a Visual Studio como herramienta externa leer de y escribir en el almacén de configuración de usuario.

Para poder depurar y repetir esta instalación, debe poder restaurar los valores de las herramientas externas. Para ello, debe guardar los valores originales de forma que pueda restablecerlos según sea necesario.

Para guardar los valores de las herramientas externas

  1. Abra Regedit.exe u otro editor del Registro.

  2. Navegue a __ENT_DICT_ANYPATHTILLLASTSLASH \ al software \ a Microsoft \ VisualStudio \ 10.0Exp \ herramientas externas \.

    NotaNota

    Asegúrese de que está examinando la clave que contiene \ 10.0Exp \ y no \ 10,0 \.Cuando se ejecuta la instancia experimental de Visual Studio, la configuración del usuario se en la sección “10.0Exp” registro.

  3. Haga clic con el botón secundario en \ herramientas externas \ subclave, y haga clic en Exportar. Asegúrese de que Rama seleccionada está seleccionado.

  4. Guarde el archivo externo resultante de Tools.reg.

Para restablecer la configuración de las herramientas externas

  1. Haga clic con el botón secundario en \ herramientas externas \ subclave del Registro, y haga clic en Eliminar.

  2. Cuando aparezca el cuadro de diálogo de Confirmar la eliminación de clave , haga clic en .

  3. Haga clic con el botón secundario en el archivo externo Tools.reg, haga clic Abrir con, y haga clic en Editor del Registro.

Diferente SettingsManager y los métodos de WritableSettingsStore se utilizan para detectar y modificar la configuración del usuario.

Para utilizar el almacén de configuración de usuario

  1. Abra el archivo de SettingsStoragePackage.cs en el editor de código.

  2. En el método de MenuItemCallback , agregue esta línea de código justo después de la instrucción de asignación de ConfigurationSettingsStore:

    WritableSettingsStore userSettingsStore = settingsManager.GetWritableSettingsStore(SettingsScope.UserSettings);
    

    La llamada al método de GetWritableSettingsStore devuelve un objeto de WritableSettingsStore denominado userSettingsStore. Utilizará este objeto para leer y escribir la configuración del usuario.

  3. Después de que las líneas en el paso anterior, agregue esta línea:

    int toolCount = userSettingsStore.GetInt32("External Tools", "ToolNumKeys");
    

    La llamada al método de GetInt32 busca el almacén de configuración de usuario para herramientas externas de la colección y devuelve los datos de propiedad de ToolNumKeys como integer. Éste es el número de herramientas externas instaladas.

  4. Después de que las líneas en el paso anterior, agregue estas líneas:

    bool hasNotepad = false;
    CompareInfo Compare = CultureInfo.InvariantCulture.CompareInfo;
    for (int i = 0; i < toolCount; i++)
    {
        if (Compare.IndexOf(userSettingsStore.GetString("External Tools", "ToolCmd" + i), "Notepad", CompareOptions.IgnoreCase) >= 0)
        {
            hasNotepad = true;
            break;
        }
    }
    

    Las llamadas al método sucesivas de GetString devuelven los datos de las propiedades ToolCmd0, ToolCmd1, etc. Los datos de la propiedad es la ruta de una herramienta externa. La llamada al método de IndexOf realiza una búsqueda sin distinción entre mayúsculas y minúsculas de la ruta de comandos en la cadena “Bloc de notas”. Si se encuentra, hasNotepad se establece en true; si no, permanece false.

  5. Después de que las líneas en el paso anterior, agregue las siguientes líneas y utiliza la instrucción de asignación de la cadena de mensaje y el resto de las instrucciones a través del final del bucle de foreach .

    string message = (hasNotepad) ? "Notepad already installed" : "Installing Notepad";
    if (!hasNotepad)
    {
        userSettingsStore.SetString("External Tools", "ToolTitle" + toolCount, "&Notepad");
        userSettingsStore.SetString("External Tools", "ToolCmd" + toolCount, "C:\\Windows\\notepad.exe");
        userSettingsStore.SetString("External Tools", "ToolArg" + toolCount, "");
        userSettingsStore.SetString("External Tools", "ToolDir" + toolCount, "$(ProjectDir)");
        userSettingsStore.SetString("External Tools", "ToolSourceKey" + toolCount, "");
        userSettingsStore.SetUInt32("External Tools", "ToolOpt" + toolCount, 0x00000011);
    
         userSettingsStore.SetInt32("External Tools", "ToolNumKeys", toolCount + 1);
    }
    

    Este código utiliza los métodos de SetString y de SetUInt32 para crear varias propiedades que instalan el Bloc de notas como herramienta externa. El Bloc de notas tiene la tecla de acceso “n” y el directorio del proyecto como el directorio inicial. Finalmente, el número de herramientas externas se incrementa y se escribirá en el almacén de configuración de usuario.

El Bloc de notas externo de la herramienta está disponible para probar.

Para probar la configuración externa de la herramienta

  1. Presione F5 para ejecutar la instancia experimental de Visual Studio.

  2. En la instancia experimental, en el menú de Herramientas , haga clic Almacenamiento de valores.

    Un mensaje debe mostrar y contener texto instalar el Bloc de notas. Haga clic en Aceptar.

  3. En el menú de Herramientas , haga clic Bloc de notas.

    Se abrirá el Bloc de notas.

  4. Después de abrir el Bloc de notas, ciérrela.

  5. En el menú de Herramientas , haga clic Bloc de notas de nuevo.

    Un mensaje debe mostrar y contener texto Bloc de notas instalado.

  6. El Bloc de notas y, a continuación cierre la instancia experimental.

Para repetir esta prueba, primero restablezca la configuración de usuario afectadas, como se describe en “para restaurar los valores de las herramientas externas”.

Mediante el almacén de configuración del proceso de Otro

Este tutorial primero muestra cómo crear un administrador de valores (objeto deSettingsManager ), utilizando el paquete VSPackage propio como proveedor de servicios.

SettingsManager settingsManager = new ShellSettingsManager(this);

La ejecución de VSPackages en el mismo procesa como Visual Studio, pero también puede tener acceso al almacén de los valores de otro proceso utilizando la clase de ExternalSettingsManager .

Para crear un administrador de configuración de otro proceso, llame al método de CreateForApplication , y pase la ruta de acceso completa del archivo ejecutable de Visual Studio (devenv.exe). Dado que Visual Studio no tiene una ubicación predeterminada, debe examinar el registro del sistema para encontrar la ruta. Esta información se encuentra en el HKLM \ el SOFTWARE \ Microsoft \ VisualStudio \versión\ InstallDir \ subclave.

Por ejemplo, para tener acceso a los valores almacenados para Visual Studio 2010, examine HKLM \ el SOFTWARE \ Microsoft \ VisualStudio \ 10,0 \ InstallDir \.

NotaNota

Para un sistema operativo Windows de 64 bits, esta subclave se HKLM \ SOFTWARE \ Wow6432Node \ Microsoft \ VisualStudio \ 10,0 \ InstallDir \.

Los datos de Visual Studio 2010 \ InstallDir \ propiedad suele C:\Program Files\Microsoft Visual Studio 10,0 \ Common7 \ IDE \.

NotaNota

Para Windows sistema operativo de 64 bits, estos datos es normalmente C:\Program archivo () \ Microsoft Visual Studio 10,0 \ Common7 \ IDE \. x86

La ruta de acceso completa es creada anexando devenv.exe a estos datos, por ejemplo,

string AppIDPath = "C:\Program Files\Microsoft Visual Studio 10.0\Common7\IDE\devenv.exe"

Por último, llame CreateForApplication para crear el administrador de configuración.

SettingsManager settingsManager = ExternalSettingsManager.CreateForApplication(AppIDPath);

Vea también

Otros recursos

estado de VSPackage