Globals 介面
Globals 物件是在 Visual Studio 環境的各個工作階段期間,以及使用 VariablePersists 屬性的跨工作階段期間,用來儲存資料的快取。
命名空間: 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 的變數無法儲存。如果值可以儲存為字串的話,它將會以其原生 (Native) 格式儲存。 |
增益集或巨集也可使用 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.");
}