コマンドライン スイッチを追加する
devenv.exe の実行時に VSPackage に適用されるコマンドライン スイッチを追加することができます。 ProvideAppCommandLineAttribute を使用して、スイッチの名前とそのプロパティを宣言します。 この例では、AddCommandSwitchPackage という名前の VSPackage のサブクラスに、引数なしで、MySwitch スイッチが追加され、VSPackage が自動的に読み込まれます。
[ProvideAppCommandLine("MySwitch", typeof(AddCommandSwitchPackage), Arguments = "0", DemandLoad = 1)]
名前付きパラメーターについては、次の説明を参照してください。
名前 | 説明 |
---|---|
引数 | スイッチの引数の数。 "*" または引数の一覧を指定できます。 |
DemandLoad | これを 1 に設定すると、VSPackage は自動的に読み込まれます。それ以外の場合は 0 に設定します。 |
HelpString | devenv /? で表示するヘルプ文字列または文字列のリソース ID。 |
名前 | スイッチ。 |
PackageGuid | パッケージの GUID。 |
通常、引数の最初の値は 0 または 1 です。 '*' という特別な値を使用すると、コマンド ラインの残りの部分全体が引数であることを示すことができます。 これは、ユーザーがデバッガー コマンド文字列を渡す必要があるデバッグ シナリオで役立ちます。
DemandLoad の値は true
(1) または false
(0) のいずれかであり、VSPackage を自動的に読み込む必要があるかどうかを示します。
HelpString の値は、devenv /? ヘルプ ディスプレイで表示される文字列のリソース ID です。 この値は "#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);
パッケージが読み込まれるたびに、コマンドライン スイッチを確認する必要があります。