Przechowywanie informacji w projektach i rozwiązaniach

Dodatki Visual Studio zostały zaniechane w programie Visual Studio 2013.Dodatki należy uaktualniać do pakietu rozszerzenia VSPackage.Aby uzyskać więcej informacji na temat uaktualniania, zobacz Często zadawane pytania: konwertowanie dodatków na rozszerzenia pakietu VSPackage.

Podczas zamykania projektu, dane użytkownika, takie jak wartości zmiennych są usuwane, nawet jeśli zapiszesz rozwiązania lub projektu.Visual Studio Model automatyzacji, jednakże daje możliwość przechowywania lub utrzymywania takich danych użytkownika między sesjami zintegrowanego środowiska programistycznego (IDE).Jest to realizowane za pomocą Globals obiektu za pomocą Globals i Globals właściwości.Globals utrzymuje się roztwór zmiennych i Globals utrzymuje zmienne projektu.Każda właściwość zwraca obiekt Globals, którego elementy członkowskie pozwalają na przechowywanie, pobieranie, wyliczanie i opcjonalne zachowanie danych.Gdy to zrobisz, przy następnym otwarciu rozwiązania lub projektu, wartości zostaną przywrócone.

To jest przydatne, na przykład, pozwala poleceniu na zaoferowanie trwałej wartości domyślnej lub pozwala jej na zmianę zachowania po przeprowadzeniu wywoływania określonej liczby razy.Dodatki mogą również użyć tej funkcji, aby utrwalić dane i pobierać dane z plików rozwiązania (.sln).

Szczegóły zachowania globalnego obiektu

Jeśli obiekt Globals jest skojarzony z IDE, wówczas wartość utrzymuje się w jednej z dwóch lokalizacji.W przypadku Windows NT 4.0, Windows 2000 Professional i Windows Server 2003, wartości są przechowywane w C:\winnt\Profiles\<username>\Application Data\Microsoft\Visual Studio\extglobal.dat.W przypadku Windows 95, Windows 98, Windows 98 Wydanie drugie, Windows Millennium Edition, jeśli komputer pracuje w trybie logowania użytkownika, wartości są przechowywane w C:\Windows\Profiles\<username>\Application Data\Microsoft\Visual Studio\extglobal.dat.W przeciwnym razie ma nie <username> elementu.Każdorazowo, gdy IDE jest zamykany lub występuje operacja Zapisz wszystko, IDE utrzymuje globalne wartości.

Jeśli obiekt Globals jest skojarzony z obiektem Solution2, wówczas wartość utrzymuje się w pliku .sln.Wartości te są zachowywane po zapisaniu pliku rozwiązania.

Jeśli obiekt Globals jest skojarzony z obiektem Project, wówczas wartość utrzymuje się w pliku projektu (.dsp, .vbp i tak dalej).Wartości są zachowywane przy każdym zapisaniu projektu.

Wartości, które mają być przechowywane muszą być jako ciąg, który może być utrwalony — to znaczy, nie SAFEARRAY, obiekt ani składowanie strukturalne.Jeśli zmiennej nie można przekonwertować na ciąg, wartość angielskiego ciągu jest zachowywana, co wyjaśnia dlaczego zmienna nie została utrwalona.

W każdym przypadku, gdy zmienne są zachowywane, jest zapisywany nowy rekord zmiennych i ich wartości.

Przechowywanie wartości globalnych

Poniższy przykład makro pokazuje, jak używać Globals obiektu i jego członków, aby zachować wartość zmiennej po zamknięciu rozwiązania i sposobu uzyskania dostępu do wartości, po otwarciu rozwiązania.Zlicza i wyświetla ile razy dodatek został załadowany.

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

Zobacz też

Zadania

Porady: dodawanie i obsługa poleceń

Porady: tworzenie dodatku

Wskazówki: tworzenie kreatora

Koncepcje

Wykres modelu obiektów automatyzacji

Inne zasoby

Tworzenie i kontrolowanie okien środowiska

Tworzenie dodatków i kreatorów

Odwołanie do automatyzacji i rozszerzalności