Partilhar via


Informações persistentes em projetos e soluções

Quando você fechar um projeto, sistema autônomo dados do usuário, sistema autônomo valores de variáveis são descartadas, mesmo que você salvar a solução ou projeto.The Visual Studio No entanto, o modelo de automação, oferece uma maneira de armazenar ou persistirem, esses dados de usuário entre sessões do ambiente de desenvolvimento integrado (IDE). Isso é realizado usando o Globals objeto por meio do Globals e Globals Propriedades. Globals persists solution variables and Globals persists project variables.Cada propriedade retorna um Globals objeto cujos membros permitem armazenar, recuperar, enumerar e opcionalmente persistir os dados. Quando você fizer isso, a próxima time em aberto a solução ou projeto, os valores são restaurados.

Isso é útil, por exemplo, para permitir que um comando oferecer um valor padrão persistente, ou permitir a alterar seu comportamento depois que ele tiver sido chamado um número específico de vezes.Add-ins também pode usar esse recurso para persistir dados e recuperar dados de arquivos de solução (.sln).

Detalhes de comportamento do objeto global

Se o Globals objeto está associado com o IDE e, em seguida, o valor persiste em um dos dois locais. For Windows NT 4.0, Windows 2000 Professional, e Windows Server 2003, os valores são armazenados em C:\winnt\Profiles\<username> \aplicativo dados\Microsoft\Visual Studio\extglobal.dat.For Windows 95, Windows 98, Windows 98 Second Edition, Windows Millennium Edition, se o computador estiver a configuração de logon do usuário, os valores são armazenados em C:\Windows\Profiles\<username> \aplicativo dados\Microsoft\Visual Studio\extglobal.dat.Caso contrário, não há nenhum <username> elemento.Ocorre sempre que o IDE está fechado ou uma operação de salvar tudo, o IDE persiste valores global.

Se o Globals objeto é associado a Solution2 objeto e, em seguida, o valor persiste no arquivo .sln. Esses valores são mantidos quando o arquivo de solução é salvo.

Se o Globals objeto é associado com um Project objeto e, em seguida, o valor persiste no arquivo de projeto (.dsp, .vbp e assim por diante). Os valores são mantidos sempre que um projeto é salvo.

sistema autônomo valores a serem armazenados devem ser sistema autônomo uma seqüência de caracteres que pode ser mantida — ou seja, não um SAFEARRAY, objeto ou armazenamento estruturado.Se a variável não pode ser convertida em uma seqüência de caracteres, um valor string em inglês é persistentes que explica por que a variável não foi persistentes.

Sempre que as variáveis são persistentes, um novo registro de variáveis e seus valores é salvo.

Valores global persistentes

O exemplo de macro a seguir mostra como usar o Globals objeto e seus membros para reter o valor de uma variável depois que uma solução for fechada e como acesso valor quando a solução é reaberta. Ele conta e gera o número de vezes que o suplemento foi carregado.

Sub OnAddinLoaded(ByVal dte As DTE)
    ' Count the number of times an add-in is loaded
    ' and store the value in the solution.
    Dim globals As Globals
    globals = dte.Solution.Globals
    If globals.VariableExists("AddinLoadCounter") Then
        ' The counter has already been set, so increment it.
        Dim int32 As System.Int32
        int32 = System.Int32.Parse(CStr(globals("AddinLoadCounter")))
        int32 += 1
        globals("AddinLoadCounter") = int32.ToString()
    Else
        ' Counter has never been set, so create and initialize it.
        globals("AddinLoadCounter") = 1.ToString()
        globals.VariablePersists("AddinLoadCounter") = True
    End If
    MsgBox("This add-in has been loaded: " & _
    globals.VariableValue("AddinLoadCounter") & " times.")
End Sub

void OnAddinLoaded(_DTE applicationObject)
{
    // Count the number of times an add-in is loaded
    // and store the value in the solution.
    Globals globals;
    globals = applicationObject.Solution.Globals;
    if(globals.get_VariableExists("AddinLoadCounter"))
    {
        // The counter has already been set, so increment it.
        System.Int32 int32;
        int32 = System.Int32.Parse((string)
        globals["AddinLoadCounter"]);
        int32++;
        globals["AddinLoadCounter"] = int32.ToString();
    }
    else
    {
        // Counter has never been set, so create and initialize it.
        globals["AddinLoadCounter"] = 1.ToString();
        globals.set_VariablePersists("AddinLoadCounter", true);
    }
    System.Windows.Forms.MessageBox.Show("This add-in has been loaded: 
    " + globals.VariableValue["AddinLoadCounter"] + " times.");
}

Consulte também

Tarefas

Como: Adicionar e manipular comandos

Como: Criar um suplemento

Demonstra Passo a passo: Criando um assistente

Conceitos

Gráfico do modelo de objetos de automação

Outros recursos

Criando e controlando o ambiente Windows

Criando suplementos e assistentes

Automação e referência a extensibilidade