Globals インターフェイス
更新 : 2007 年 11 月
Globals オブジェクトは、VariablePersists プロパティを使用して、Visual Studio 環境の各セッションの存続期間および複数セッションの存続時間のデータを格納するためのキャッシュです。
名前空間 : EnvDTE
アセンブリ : EnvDTE (EnvDTE.dll 内)
構文
'宣言
<GuidAttribute("E68A3E0E-B435-4DDE-86B7-F5ADEFC19DF2")> _
Public Interface Globals
'使用
Dim instance As Globals
[GuidAttribute("E68A3E0E-B435-4DDE-86B7-F5ADEFC19DF2")]
public interface Globals
[GuidAttribute(L"E68A3E0E-B435-4DDE-86B7-F5ADEFC19DF2")]
public interface class Globals
public interface Globals
解説
たとえば、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 Globalsglobals = 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.");
}