Поделиться через


Добавление коммутаторов командной строки

Вы можете добавить переключатели командной строки, которые применяются к VSPackage при выполнении devenv.exe . Используется ProvideAppCommandLineAttribute для объявления имени коммутатора и его свойств. В этом примере параметр MySwitch добавляется для подкласса VSPackage с именем AddCommandSwitchPackage без аргументов и при загрузке VSPackage автоматически.

[ProvideAppCommandLine("MySwitch", typeof(AddCommandSwitchPackage), Arguments = "0", DemandLoad = 1)]

Именованные параметры показаны в следующих описаниях.

Имя Описание
Аргументы Количество аргументов для коммутатора. Может быть "*" или список аргументов.
DemandLoad Загрузите VSPackage автоматически, если для этого задано значение 1, в противном случае — значение 0.
HelpString Строка справки или идентификатор ресурса строки для отображения с devenv /?.
Имя. Переключатель.
PackageGuid Идентификатор GUID пакета.

Первое значение аргументов обычно равно 0 или 1. Специальное значение "*" можно использовать для указания того, что остальная часть командной строки является аргументом. Это может быть полезно для сценариев отладки, в которых пользователь должен передать командную строку отладчика.

Значение DemandLoad равно true (1) или false (0) указывает, что VSPackage должен загружаться автоматически.

Значение HelpString — это идентификатор ресурса строки, которая отображается в devenv /? Отображение справки. Это значение должно быть в форме "#nnn", где nnn является целым числом. Строковое значение в файле ресурсов должно заканчиваться новым символом строки.

Значение Name — это имя переключателя.

Значение PackageGuid — это GUID пакета, реализующего этот коммутатор. Интегрированная среда разработки использует этот GUID для поиска VSPackage в реестре, к которому применяется параметр командной строки.

Получение коммутаторов командной строки

При загрузке пакета можно получить переключатели командной строки, выполнив следующие действия.

  1. В реализации VSPackage SetSite вызовите QueryService SVsAppCommandLine для получения IVsAppCommandLine интерфейса.

  2. Вызов для GetOption получения параметров командной строки, введенных пользователем.

    В следующем коде показано, как узнать, был ли параметр командной строки MySwitch введен пользователем:

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

int isPresent = 0;
string optionValue = "";

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

Вы несете ответственность за проверка для коммутаторов командной строки при каждой загрузке пакета.