명령줄 스위치 추가
devenv.exe가 실행될 때 VSPackage에 적용되는 명령줄 스위치를 추가할 수 있습니다. ProvideAppCommandLineAttribute으로 스위치의 이름 및 해당 속성을 선언합니다. 이 예제에서는 인수가 없고 자동 로드된 VSPackage가 있는 AddCommandSwitchPackage라는 VSPackage의 하위 클래스에 대해 MySwitch 스위치가 추가됩니다.
[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은 정수)이어야 합니다. 리소스 파일의 문자열 값은 새 줄 문자로 끝나야 합니다.
이름 값은 스위치의 이름입니다.
PackageGuid 값은 이 스위치를 구현하는 패키지의 GUID입니다. IDE는 이 GUID를 사용하여 명령줄 스위치가 적용되는 레지스트리에서 VSPackage를 찾습니다.
명령줄 스위치 검색
패키지가 로드되면 다음 단계를 완료하여 명령줄 스위치를 검색할 수 있습니다.
VSPackage의 SetSite 구현에서 SVsAppCommandLine의
QueryService
를 호출하여 IVsAppCommandLine 인터페이스를 가져옵니다.GetOption을 호출하여 사용자가 입력한 명령줄 스위치를 검색합니다.
다음 코드는 사용자가 MySwitch 명령줄 스위치를 입력했는지 여부를 확인하는 방법을 보여 줍니다.
IVsAppCommandLine cmdline = (IVsAppCommandLine)GetService(typeof(SVsAppCommandLine));
int isPresent = 0;
string optionValue = "";
cmdline.GetOption("MySwitch", out isPresent, out optionValue);
패키지가 로드될 때마다 명령줄 스위치를 확인하는 것은 사용자의 책임입니다.