Condividi tramite


procedura dettagliata: Utilizzo dell'archivio delle impostazioni

Sebbene le impostazioni di Visual Studio in genere salvate in modo permanente nel Registro di sistema, è possibile separare l'archiviazione delle impostazioni del Registro di sistema utilizzando un archivio delle impostazioni. Utilizzando le impostazioni dell'archivio invece del Registro di sistema semplifica la distribuzione e facilita la sicurezza.

Esistono due tipi di archivi di impostazioni:

  • Impostazioni di configurazione, ovvero impostazioni di sola lettura di un VSPackage e Visual Studio. Visual Studio unisce le impostazioni da tutti i file che .pkgdef in questo archivio.

  • Impostazioni utente, ovvero impostazioni modificabili come quelle visualizzate nelle pagine della finestra di dialogo Opzioni , nelle pagine delle proprietà e in certe altre finestre di dialogo. Le estensioni di Visual Studio possono utilizzare questi per l'archiviazione locale di piccole quantità di dati.

In questa procedura dettagliata viene illustrato come utilizzare entrambi i tipi di archivi dell'impostazione.

Per creare il progetto di esempio

In questa sezione viene illustrato come creare un progetto di base dell'archivio delle impostazioni.

Per creare il progetto di esempio

  1. creare un pacchetto SettingsStoragedenominato progetto di Visual Studio .

    per ulteriori informazioni su come creare un VSPackage gestito, vedere procedura dettagliata: Creazione di un comando di menu utilizzando il modello importa pacchetto Visual Studio.

  2. Nella pagina Selezionare un linguaggio di programmazione , **Visual C#**selezionato.

  3. Nella pagina Seleziona opzioni VSPackage , Comando di menuselezionato.

  4. Nella pagina Opzioni comando , modificare Nome comando a Archiviazione delle impostazioni e ID comando a cmdidSettingsStorage.

  5. Nella pagina Select Test Options , deselezionare entrambe le caselle di controllo e scegliere Fine.

  6. Premere F5 per eseguire istanza sperimentale di Visual Studio.

  7. Nell'istanza sperimentale, scegliere dal menu Strumenti , fare clic su Settings Storage.

    Il seguente messaggio deve essere visualizzato.

    Microsoft.SettingsStorage.SettingsStoragePackage.MenuItemCallback interno ().

  8. chiudere l'istanza sperimentale.

Esistono diversi modi per restituire il testo da un VSPackage. In questa procedura dettagliata viene illustrato come modificare il metodo di SettingsStoragePackage.MenuItemCallback per visualizzare i risultati di ciascuno dei set di passaggi.

Utilizzo dell'archivio delle impostazioni di configurazione

In questa sezione viene illustrato come utilizzare vari SettingsManager e i metodi di SettingsStore per rilevare e visualizzare le impostazioni di configurazione.

Per utilizzare l'archivio delle impostazioni di configurazione

  1. Aprire il file di SettingsStoragePackage.cs nell'editor di codice.

  2. Aggiungere queste righe all'inizio del file:

    using System.Collections.Generic;
    using Microsoft.VisualStudio.Settings;
    using Microsoft.VisualStudio.Shell.Settings;
    
  3. Aggiungere queste righe all'inizio del metodo di MenuItemCallback :

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

    Viene chiamato il costruttore di #ctor e passa un riferimento al package VS stesso come parametro di IServiceProvider . il costruttore restituisce un oggetto di SettingsManager . il metodo di GetReadOnlySettingsStore restituisce un oggetto di SettingsStore denominato ConfigurationSettingsStore. utilizzare questo oggetto per leggere le impostazioni di configurazione.

  4. Aggiungere le seguenti righe dopo le righe nel passaggio precedente:

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

    In questo modo vengono l'archivio delle impostazioni di configurazione la raccolta InstalledProducts con il subcollection Visual Web Developer. Se il subcollection è presente, la stringa di messaggio viene impostato su “true„; in caso contrario, è “False„ impostate.

  5. Nella chiamata MessageBox, sostituire il valore del parametro “SettingsStorage„ con il nome “messaggio„. Il metodo di MenuItemCallback dovrebbe ora essere simile al seguente:

    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. Premere F5 per eseguire istanza sperimentale di Visual Studio.

  7. Nell'istanza sperimentale, scegliere dal menu Strumenti , fare clic su Settings Storage.

    Un messaggio deve essere visualizzato e contengono il testo Visual Web Developer Installed: seguito da True o da False.

  8. chiudere l'istanza sperimentale.

Visual Studio distribuisca l'archivio delle impostazioni del Registro di sistema. Per questo motivo, è possibile utilizzare un editor del Registro di sistema, ad esempio, il regedit.exe, per verificare la configurazione e le impostazioni utente.

Per utilizzare un editor del Registro di sistema per verificare le impostazioni di configurazione

  1. Aprire il regedit.exe o un altro editor del Registro di sistema.

  2. Passare a HKEY_CURRENT_USER \ software \ Microsoft \ VisualStudio \ 10.0Exp_Config \ InstalledProducts \.

    Nota

    Assicurarsi che sia riprodotta la chiave contenente \ 10.0Exp_Config \ e non \ 10.0_Config \.Quando si esegue l'istanza sperimentale di Visual Studio, le impostazioni di configurazione sono nell'hive “10.0Exp_Config„ del Registro di sistema.

  3. espandere \ prodotti installati \ nodo. Se il messaggio nei passaggi precedenti è Visual Web Developer Installed: True, quindi \ prodotti installati \ deve contenere un nodo di Visual Web Developer. Se il messaggio è Visual Web Developer Installed: False, quindi \ prodotti installati \ non deve contenere un nodo di Visual Web Developer.

È anche possibile utilizzare il metodo di CollectionExists per determinare se un particolare servizio viene installato. È necessario conoscere il tipo della classe di servizio.

Per determinare se un servizio è disponibile

  1. Nel codice, sostituire IsVisualWebDevInstalled e le istruzioni di assegnazione di messaggio con le righe seguenti.

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

    In questo modo vengono l'archivio delle impostazioni di configurazione dei servizi di raccolta che contiene il subcollection denominato dal GUID del servizio. Se il subcollection è presente, la stringa di messaggio viene impostato su “true„; in caso contrario, è “False„ impostate.

  2. Premere F5 per eseguire istanza sperimentale di Visual Studio.

  3. Nell'istanza sperimentale, scegliere dal menu Strumenti , fare clic su Settings Storage.

    Un messaggio deve essere visualizzato e contengono il testo Help Service Available: seguito da True o da False. Per verificare questa impostazione, è possibile utilizzare un editor del Registro di sistema, come illustrato nei passaggi precedenti.

  4. chiudere l'istanza sperimentale.

È inoltre possibile utilizzare i metodi di GetString e di GetSubCollectionNames per elencare i servizi che vengono registrati nell'archivio delle impostazioni di configurazione.

Per elencare i servizi disponibili

  1. Sostituire il codice nei passaggi precedenti con le righe seguenti.

    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 chiamata al metodo di GetSubCollectionNames ottiene i nomi dei membri dei servizi di raccolta. La chiamata al metodo di GetString restituisce i dati della proprietà di Name di ogni membro. Se la proprietà di Name non esiste, il nome predefinito “sconosciuto„ viene restituito. I nomi risultanti vengono associati alla stringa di messaggio.

  2. Premere F5 per eseguire istanza sperimentale di Visual Studio.

  3. Nell'istanza sperimentale, scegliere dal menu Strumenti , fare clic su Settings Storage.

    Un messaggio deve essere visualizzati e includere il testo seguente.

    primi cinque servizi:PL/SQLTypeSystemCompilatore Microsoft Visual BasicSTestExecutionServiceservizio di ResX RefactorNotify

    Nell'elenco dei servizi può essere diversa. Per testare queste impostazioni, è possibile utilizzare l'editor del Registro di sistema.

  4. chiudere l'istanza sperimentale.

È possibile reimpostare le impostazioni di configurazione tramite la procedura riportata di seguito.

Per reimpostare le impostazioni di configurazione

  1. Fare clic Avvia, fare clic All Programs, fare clic Microsoft Visual Studio 2010 SDK, fare clic Strumentiquindi fare clic su Reset the Microsoft Visual Studio 2010 Experimental instance.

    Una finestra di comando viene visualizzato.

  2. L'attesa fino a Press any key to continue viene restituita quindi preme un tasto per chiudere la finestra di comando.

Utilizzo dell'archivio delle impostazioni utente

In questa sezione viene illustrato come aggiungere Blocco Note a Visual Studio come strumento esterno leggendo e scrivendo nell'archivio delle impostazioni utente.

In modo da poter eseguire il debug e ripetere automaticamente questa installazione, deve essere possibile reimpostare le impostazioni strumenti esterni. A questo scopo, è necessario salvare le impostazioni originali in modo che sia possibile ripristinarli come richiesto.

Per salvare le impostazioni strumenti esterni

  1. Aprire il regedit.exe o un altro editor del Registro di sistema.

  2. Passare a HKEY_CURRENT_USER \ software \ Microsoft \ VisualStudio \ 10.0Exp \ strumenti esterni \.

    Nota

    Assicurarsi che sia riprodotta la chiave contenente \ 10.0Exp \ e non \ 10,0 \.Quando si esegue l'istanza sperimentale di Visual Studio, le impostazioni utente vengono nell'hive “10.0Exp„ del Registro di sistema.

  3. Fare clic con il pulsante destro del mouse \ strumenti esterni \ sottochiave quindi fare clic su Esporta. Assicurarsi che Selected branch sia selezionato.

  4. Salvare il file risultante esterni Tools.reg.

Per ripristinare le impostazioni degli strumenti esterni

  1. Fare clic con il pulsante destro del mouse \ strumenti esterni \ sottochiave del Registro di sistema e quindi fare clic Elimina.

  2. Quando la finestra di dialogo Confirm Key Delete viene visualizzato, fare clic .

  3. Fare clic con il pulsante destro del mouse sul file esterni Tools.reg, fare clic Apri conquindi fare clic su Editor del Registro di sistema.

Vari SettingsManager e i metodi di WritableSettingsStore vengono utilizzati per rilevare e modificare le impostazioni utente.

Per utilizzare l'archivio delle impostazioni utente

  1. Aprire il file di SettingsStoragePackage.cs nell'editor di codice.

  2. Nel metodo di MenuItemCallback , aggiungere la seguente riga di codice subito dopo l'istruzione di assegnazione di ConfigurationSettingsStore:

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

    La chiamata al metodo di GetWritableSettingsStore restituisce un oggetto di WritableSettingsStore denominato userSettingsStore. Si utilizzerà questo oggetto per leggere e scrivere le impostazioni utente.

  3. Dopo che le righe nel passaggio precedente, aggiungere la riga seguente:

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

    La chiamata al metodo di GetInt32 cerca l'archivio delle impostazioni utente strumenti esterni di raccolta e restituisce i dati della proprietà di ToolNumKeys come Integer. Si tratta del numero degli strumenti esterni già installati.

  4. Dopo che le righe nel passaggio precedente, aggiungere le righe seguenti:

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

    Le chiamate al metodo successive di GetString restituiscono dati delle proprietà ToolCmd0, ToolCmd1, e così via. Ogni dati della proprietà è il percorso di uno strumento esterno. La chiamata al metodo di IndexOf esegue una ricerca senza distinzione tra maiuscole e minuscole nel percorso di comando per la stringa “Blocco Note„. Se presente, hasNotepad è impostato su true; in caso contrario, rimane false.

  5. Dopo che le righe nel passaggio precedente, aggiungere le seguenti righe e sostituiscono l'istruzione di assegnazione della stringa di messaggio e qualsiasi altra istruzione nella fine di foreach un ciclo.

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

    Questo codice utilizza i metodi di SetUInt32 e di SetString per creare varie proprietà che imposta Blocco Note come strumento esterno. Il Blocco note viene assegnato un tasto di scelta “N„ e la directory del progetto come la directory di avvio. Infine, il numero degli strumenti esterni viene incrementato e scritto nell'archivio delle impostazioni utente.

Lo strumento esterno Blocco Note è ora disponibile per il test.

Per verificare l'installazione esterna dello strumento

  1. Premere F5 per eseguire istanza sperimentale di Visual Studio.

  2. Nell'istanza sperimentale, scegliere dal menu Strumenti , fare clic su Settings Storage.

    Un messaggio deve essere visualizzato e contengono il testo Installing Notepad. Scegliere OK.

  3. Scegliere dal menu Strumenti , fare clic su Notepad.

    Verrà aperto il Blocco note.

  4. Dopo il Blocco Note viene aperta, chiuderla.

  5. Scegliere dal menu Strumenti , fare clic su Notepad ancora.

    Un messaggio deve essere visualizzato e contengono il testo Notepad already installed.

  6. Chiudere Blocco Note e quindi chiudere l'istanza sperimentale.

Per ripetere questo test, è innanzitutto necessario ripristinare le impostazioni utente interessate, come descritto precedentemente in “ripristinare le impostazioni degli strumenti esterni„.

Utilizzo dell'archivio delle impostazioni da un altro processo

In questa procedura dettagliata innanzitutto illustrato come creare un amministratore delle impostazioni (oggetto diSettingsManager ), utilizzando il package VS stessa come provider di servizi.

SettingsManager settingsManager = new ShellSettingsManager(this);

L'esecuzione di package VS nello stesso processo di Visual Studio, ma è anche possibile accedere all'archivio delle impostazioni da un altro processo utilizzando la classe di ExternalSettingsManager .

Per creare un amministratore di impostazioni da un altro processo, chiamare il metodo di CreateForApplication e passare il percorso completo dell'eseguibile di Visual Studio (devenv.exe). Poiché Visual Studio non ha una posizione predeterminata, è necessario esaminare il Registro di sistema per individuare il percorso. Queste informazioni sono contenute nel HKLM \ SOFTWARE \ Microsoft \ VisualStudio \versione\ InstallDir \ sottochiave.

Ad esempio, per accedere all'archivio delle impostazioni per Visual Studio 2010, esaminare HKLM \ SOFTWARE \ Microsoft \ VisualStudio \ 10,0 \ InstallDir \.

Nota

Per un sistema operativo windows a 64 bit, la sottochiave è HKLM \ SOFTWARE \ Wow6432Node \ Microsoft \ VisualStudio \ 10,0 \ InstallDir \.

I dati di Visual Studio 2010 \ InstallDir \ proprietà sono in genere Visual Studio 10.0 \ Common7 \ IDE di C:\Program Files\Microsoft \.

Nota

Per windows 64 bit sistema operativo, questo dati è in genere C:\Program file (x86) \ Microsoft Visual Studio 10,0 \ Common7 \ IDE.

Il percorso completo viene creato aggiungendo devenv.exe a questi dati, ad esempio,

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

Infine, viene chiamato CreateForApplication per creare gestione delle impostazioni.

SettingsManager settingsManager = ExternalSettingsManager.CreateForApplication(AppIDPath);

Vedere anche

Altre risorse

Stato di un VSPackage