次の方法で共有


Globals インターフェイス

Globals オブジェクトは、VariablePersists プロパティを使用して、Visual Studio 環境の各セッションの存続期間および複数セッションの存続時間のデータを格納するためのキャッシュです。

名前空間:  EnvDTE
アセンブリ:  EnvDTE (EnvDTE.dll 内)

構文

'宣言
<GuidAttribute("E68A3E0E-B435-4DDE-86B7-F5ADEFC19DF2")> _
Public Interface Globals
[GuidAttribute("E68A3E0E-B435-4DDE-86B7-F5ADEFC19DF2")]
public interface Globals
[GuidAttribute(L"E68A3E0E-B435-4DDE-86B7-F5ADEFC19DF2")]
public interface class Globals
[<GuidAttribute("E68A3E0E-B435-4DDE-86B7-F5ADEFC19DF2")>]
type Globals =  interface end
public interface Globals

Globals 型で公開されるメンバーは以下のとおりです。

プロパティ

  名前 説明
パブリック プロパティ DTE トップ レベルの機能拡張オブジェクトを取得します。
パブリック プロパティ Parent Globals オブジェクトの直接の親オブジェクトを取得します。
パブリック プロパティ VariableExists 指定した変数が存在するかどうかを示す値を返します。
パブリック プロパティ VariableNames 現在のすべてのグローバル変数名のリストを取得します。
パブリック プロパティ VariablePersists VariablePersists プロパティは、複数の型の Globals オブジェクトに適用されます。DTE.Globals オブジェクトの場合は、変数が環境によって保持され、環境のセッション間で利用できるかどうかを取得または設定します。Solution.Globals オブジェクトの場合は、変数が環境によって保持され、環境のセッション間およびソリューションの読み込みとアンロード間で利用できるかどうかを取得または設定します。Project.Globals オブジェクトの場合は、変数が環境によってプロジェクト ファイルに保持されるかどうかを取得または設定します。
パブリック プロパティ VariableValue 指定した名前で変数を返すか、設定します。

このページのトップへ

解説

たとえば、Globals オブジェクトを使用すると、実行ごとの値が永続化するグローバル変数をプログラムで使用できます。このオブジェクトは、実行ごとにユーザーが情報を入力する必要がある場合に、コマンドが既定値を実装できるようにするためにも使用できます。また、一定回数の呼び出しが行われた後に、動作を変更するためにも使用できます。

データは、名前とバリアント値のペアとして Globals オブジェクトに格納されます。VariablePersists プロパティを使用してこの名前と値のペアをディスク上に格納し、その状態を (文字列として) Visual Studio の異なるセッション間で保持することもできます。

[!メモ]

オブジェクトまたは SafeArrays を含む変数は保存できません。値を文字列として保存できる場合は、ネイティブな形式で保存されます。

アドインまたはマクロの場合も、Globals オブジェクトを使用して、Visual Studio セッション間で各ユーザーに固有のユーザー定義データを保存できます。Globals オブジェクトを使用して、ソリューション (.sln) ファイルにデータを保存したり、データを取得したりできます。

VariableValue プロパティを使用すると、Globals オブジェクトで保存した値の保存および読み取りが可能です。

[!メモ]

VariableValue の名前の文字列に、空白文字、コロン (:)、またはピリオド (.) を含めることはできません。名前にこれらのいずれかの文字が含まれていると、"値が有効な範囲にありません。" というエラーが示されます。

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

参照

関連項目

EnvDTE 名前空間

その他の技術情報

プロジェクトとソリューションの永続情報