This documentation is archived and is not being maintained.

Globals Interface

The Globals object is a cache for storing data for the duration of each session of the Visual Studio environment, as well as across sessions using the VariablePersists property.

Namespace:  EnvDTE
Assembly:  EnvDTE (in EnvDTE.dll)

public interface Globals

The Globals object, for example, allows programs to have global variables whose values persist between executions. It can also be used to allow a command to implement a default value if it requires the user to enter information each time it executes. Furthermore, it can be used to change its behavior after it has been invoked a certain number of times.

Data is stored in the Globals object as name/variant-value pairs. These name/value pairs can optionally be stored on disk by using the VariablePersists property to maintain their state (as a string) between different sessions of Visual Studio.


Variables containing objects or SafeArrays cannot be saved. If the value can be saved as a string, then it is saved in its native format.

Add-ins or macros can also use the Globals object to save user-defined data unique to each user between Visual Studio sessions. They can also use the Globals object to save data to and retrieve data from a solution (.sln) file.

Use the VariableValue property to save or read values saved with the Globals object.


VariableValue name strings cannot contain space, colon (:), or period(.) characters. If a name has any of these characters, you get the error, "Value does not fall within expected range."

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;
        // The counter has already been set, so increment it.
        System.Int32 int32;
        int32 = System.Int32.Parse((string)
        globals["AddinLoadCounter"] = int32.ToString();
        // 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.");