Добавление коммутаторов командной строки
Вы можете добавить переключатели командной строки, которые применяются к 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 в реестре, к которому применяется параметр командной строки.
Получение коммутаторов командной строки
При загрузке пакета можно получить переключатели командной строки, выполнив следующие действия.
В реализации 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);
Вы несете ответственность за проверка для коммутаторов командной строки при каждой загрузке пакета.