コマンドライン スイッチを追加する

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 が検索されます。

コマンドライン スイッチを取得する

パッケージが読み込まれたら、次の手順を実行してコマンドライン スイッチを取得できます。

  1. VSPackage の SetSite 実装で、SVsAppCommandLine に対して QueryService を呼び出して、IVsAppCommandLine インターフェイスを取得します。

  2. GetOption を呼び出して、ユーザーが入力したコマンドライン スイッチを取得します。

    次のコードは、MySwitch コマンドライン スイッチがユーザーによって入力されたかどうかを調べる方法を示しています。

IVsAppCommandLine cmdline = (IVsAppCommandLine)GetService(typeof(SVsAppCommandLine));

int isPresent = 0;
string optionValue = "";

cmdline.GetOption("MySwitch", out isPresent, out optionValue);

パッケージが読み込まれるたびに、コマンドライン スイッチを確認する必要があります。