添加命令行开关

可以添加在执行 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实现中,调用QueryServiceSVsAppCommandLine以获取IVsAppCommandLine接口。

  2. 调用 GetOption 以检索用户输入的命令行开关。

    以下代码演示如何了解用户是否输入了 MySwitch 命令行开关:

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

int isPresent = 0;
string optionValue = "";

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

每次加载包时,都要为命令行开关检查。