添加命令行开关
可以添加在执行 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实现中,调用
QueryService
SVsAppCommandLine以获取IVsAppCommandLine接口。调用 GetOption 以检索用户输入的命令行开关。
以下代码演示如何了解用户是否输入了 MySwitch 命令行开关:
IVsAppCommandLine cmdline = (IVsAppCommandLine)GetService(typeof(SVsAppCommandLine));
int isPresent = 0;
string optionValue = "";
cmdline.GetOption("MySwitch", out isPresent, out optionValue);
每次加载包时,都要为命令行开关检查。