Informações persistentes em projetos e soluções
Quando você fecha um projeto, os dados do usuário, como valores de variáveis são descartadas, mesmo que você salve a solução ou projeto.O Visual Studio modelo de automação, no entanto, oferece uma maneira de armazenar ou persistirem, tais dados de usuário entre sessões do ambiente de desenvolvimento integrado (IDE).Isso é realizado usando o Globals de objeto por meio do Globals e Globals propriedades.Globalsvariáveis de solução de persistir e Globalspersistir variáveis do projeto.Cada propriedade que retorna um Globals cujos membros permitem armazenar, recuperar, enumerar e, opcionalmente, manter os dados do objeto.Ao fazer isso, na próxima vez que você abre 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 que ele altere seu comportamento após ele ter 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 a Globals o objeto está associado com o IDE, em seguida, o valor será mantido em um dos dois locais.Para Windows NT 4.0, Windows 2000 Professional, e Windows Server 2003, os valores são armazenados em C:\winnt\Profiles\<username>\Application Data\Microsoft\Visual Studio\extglobal.dat.Para Windows 95, Windows 98, Windows 98 Second Edition, Windows Millennium Edition, se a máquina está configurado para logon de usuário, os valores são armazenados em C:\Windows\Profiles\<username>\Application Data\Microsoft\Visual Studio\extglobal.dat.Caso contrário, não há nenhum <username> elemento.Toda vez que o IDE está fechado ou uma operação de salvar tudo ocorre, o IDE persiste os valores globais.
Se a Globals objeto é associado a Solution2 de objeto, e em seguida, o valor persiste no arquivo. sln.Esses valores são mantidos quando o arquivo de solução é salvo.
Se a Globals objeto é associado um Project de 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.
Valores a serem armazenados devem ser como 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 para uma seqüência de caracteres, um valor de seqüência de caracteres em inglês é persistente que explica por que a variável não foi mantida.
Sempre que as variáveis são persistentes, um novo registro de variáveis e seus valores é salvos.
Valores globais 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 acessar o valor quando a solução é reaberta.Ele conta e o número de vezes que o suplemento foi carregado de saídas.
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
Passo a passo: Criando um assistente
Conceitos
Gráfico de modelo de objeto de automação
Outros recursos
Criar e controlar o ambiente Windows