新增命令列參數
您可以在執行 devenv.exe 時,新增套用至 VSPackage 的命令列參數。 使用 ProvideAppCommandLineAttribute 來宣告參數的名稱及其屬性。 在此範例中,會為名為 AddCommandSwitchPackage 的 VSPackage 子類別新增 MySwitch 參數,不含引數且會自動載入 VSPackage。
[ProvideAppCommandLine("MySwitch", typeof(AddCommandSwitchPackage), Arguments = "0", DemandLoad = 1)]
具名參數顯示在下列描述中。
名稱 | 描述 |
---|---|
引數 | 參數的引數數目。 可以是 "*" 或引數清單。 |
DemandLoad | 如果此設定為 1,則會自動載入 VSPackage,否則會設定為 0。 |
HelpString | 要以 devenv /? 顯示之字串的說明字串或資源識別碼。 |
名稱 | 參數。 |
PackageGuid | 套件的 GUID。 |
引數的第一個值通常是 0 或 1。 特殊值 '*' 可用來指明命令列的其餘部分是引數。 這對於使用者必須傳入偵錯工具命令字串的偵錯案例很有用。
DemandLoad 值為 true
(1) 或 false
(0) 表示應該自動載入 VSPackage。
HelpString 值是出現在 devenv /? 說明顯示中的字串資源識別碼。 此值的格式應該是 "#nnn",其中 nnn 是整數。 資源檔中的字串值應該以新行字元結尾。
Name 值是參數的名稱。
PackageGuid 值是實作此參數之套件的 GUID。 IDE 會使用此 GUID 在登錄中尋找套用該命令列參數的 VSPackage。
擷取命令列參數
載入套件時,您可以完成下列步驟來擷取命令列參數。
在 VSPackage 的 SetSite 實作中,呼叫 SVsAppCommandLine 上的
QueryService
以取得 IVsAppCommandLine 介面。呼叫 GetOption 以擷取使用者輸入的命令列參數。
下列程式碼說明如何確定使用者是否輸入 MySwitch 命令列參數:
IVsAppCommandLine cmdline = (IVsAppCommandLine)GetService(typeof(SVsAppCommandLine));
int isPresent = 0;
string optionValue = "";
cmdline.GetOption("MySwitch", out isPresent, out optionValue);
您必須負責在每次載入套件時檢查命令列參數。