次の方法で共有


Globals.VariablePersists プロパティ

VariablePersists プロパティは、複数の型の Globals オブジェクトに適用されます。DTE.Globals オブジェクトの場合は、変数が環境によって保持され、環境のセッション間で利用できるかどうかを取得または設定します。Solution.Globals オブジェクトの場合は、変数が環境によって保持され、環境のセッション間およびソリューションの読み込みとアンロード間で利用できるかどうかを取得または設定します。Project.Globals オブジェクトの場合は、変数が環境によってプロジェクト ファイルに保持されるかどうかを取得または設定します。

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

構文

'宣言
Property VariablePersists ( _
    VariableName As String _
) As Boolean
bool this[
    string VariableName
] { get; set; }
property bool VariablePersists[String^ VariableName] {
    bool get (String^ VariableName);
    void set (String^ VariableName, bool value);
}
abstract VariablePersists : bool with get, set
JScript では、インデックス付きプロパティはサポートされません。

パラメーター

  • VariableName
    型 : System.String
    必ず指定します。保持する変数名を表します。

プロパティ値

型 : System.Boolean
変数が存在するかどうかを示すブール値。 VariablePersists は、変数が存在する場合は true を返し、それ以外の場合は false を返します。

解説

グローバル変数は、Visual Studio のセッション内では常に保持されますが、VariablePersists を使用すると、セッション間でも変数が保持されます。

[!メモ]

変数を特定のソリューションと共に保存するには、DTE.Solution.Globals を使用します。

変数が存在しない場合、VariablePersists は false を返します。

Solution オブジェクト (Solution.Globals) の場合は、ソリューションが保存されるたびにデータが保存されます。Globals オブジェクトを変更すると、ソリューション ファイルが編集済み (または "ダーティ") としてマークされます。DTE オブジェクト (DTE.Globals) の場合は、Visual Studio 環境がシャットダウンされるか、ソリューションが保存されると、データが保存されます。どちらの場合も、ユーザー プロファイル ディレクトリのソリューション (.sln) ファイルまたは構造化ストレージ ファイルにデータが格納されます。

環境がシャットダウンされるか、Save All が実行されると、すべてのグローバル値が保存されます。VariablePersists が DTE オブジェクトに関連付けられている場合、値は、Visual Studio 環境のユーザー オプション ディレクトリに保存されます。

グローバル変数が Solution オブジェクトに関連付けられている場合、値は、ソリューション (.sln) ファイルに保存されます。値は、環境が .sln ファイルを書き込むたびに保存されます。

以前に保存していた値は、保存する変数で上書きされます。保存済みファイルから変数を削除するには、VariablePersists を false に設定します。環境は、次の Save の操作時に値を削除します。

[!メモ]

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

.NET Framework セキュリティ

  • 直前の呼び出し元に対する完全な信頼。このメンバーは、部分的に信頼されているコードから使用することはできません。詳細については、「部分信頼コードからのライブラリの使用」を参照してください。

参照

関連項目

Globals インターフェイス

EnvDTE 名前空間

その他の技術情報

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

方法 : オートメーション オブジェクト モデルのコード例をコンパイルおよび実行する