다음을 통해 공유


메뉴 명령을 사용하여 확장 만들기

이 연습에서는 메모장을 시작하는 메뉴 명령을 사용하여 확장을 만드는 방법을 보여줍니다.

메뉴 명령 만들기

  1. FirstMenuCommand라는 VSIX 프로젝트를 만듭니다. “vsix”를 검색하여 새 프로젝트 대화 상자에서 VSIX 프로젝트 템플릿을 찾을 수 있습니다.

  2. 프로젝트가 열리면 이름이 FirstCommand인 사용자 지정 항목 템플릿을 추가합니다. 솔루션 탐색기에서 프로젝트 노드를 마우스 오른쪽 단추로 클릭하고 추가>새 항목을 선택합니다. 새 항목 추가 대화 상자에서 C# 항목>확장성으로 이동하여 명령을 선택합니다. 창 아래의 이름 필드에서 명령 파일 이름을 FirstCommand.cs로 바꿉니다.

  3. 프로젝트를 빌드하고 디버깅을 시작합니다.

    Visual Studio의 실험적 인스턴스가 시작됩니다. 실험적 인스턴스에 대한 자세한 내용은 실험적 인스턴스를 참조하세요.

  4. 실험적 인스턴스에서 확장>확장 관리 창을 엽니다. 여기에 FirstMenuCommand 확장이 표시됩니다. (Visual Studio의 작업 인스턴스에서 확장 관리를 열면 FirstMenuCommand가 표시되지 않습니다.)

이제 실험적 인스턴스의 도구 메뉴로 이동합니다. Invoke FirstCommand 명령이 표시됩니다. 이 시점에 명령은 FirstCommand Inside FirstMenuCommand.FirstCommand.MenuItemCallback()이라는 메시지 상자를 표시합니다. 다음 섹션에서 이 명령으로 메모장을 실제로 시작하는 방법을 살펴보겠습니다.

메뉴 명령 처리기 변경

이제 메모장을 시작하도록 명령 처리기를 업데이트하겠습니다.

  1. 디버깅을 중지하고 Visual Studio의 작업 인스턴스로 돌아갑니다. FirstCommand.cs 파일을 열고 다음 using 문을 추가합니다.

    using System.Diagnostics;
    
  2. 프라이빗 FirstCommand 생성자를 찾습니다. 명령이 명령 서비스에 연결되고 명령 처리기가 지정된 위치입니다. 명령 처리기의 이름을 다음과 같이 StartNotepad로 변경합니다.

    private FirstCommand(AsyncPackage package, OleMenuCommandService commandService)
    {
        this.package = package ?? throw new ArgumentNullException(nameof(package));
        commandService = commandService ?? throw new ArgumentNullException(nameof(commandService));
    
        CommandID menuCommandID = new CommandID(CommandSet, CommandId);
        // Change to StartNotepad handler.
        MenuCommand menuItem = new MenuCommand(this.StartNotepad, menuCommandID);
        commandService.AddCommand(menuItem);
    }
    
  3. Execute 메서드를 제거하고 메모장을 시작하는 StartNotepad 메서드를 추가합니다.

    private void StartNotepad(object sender, EventArgs e)
    {
        ThreadHelper.ThrowIfNotOnUIThread();
    
        Process proc = new Process();
        proc.StartInfo.FileName = "notepad.exe";
        proc.Start();
    }
    
  4. 이제 사용해 보세요. 프로젝트 디버깅을 시작하고 도구>Invoke FirstCommand를 클릭하면 메모장 인스턴스가 표시됩니다.

    Process 클래스의 인스턴스를 사용하여 메모장뿐만 아니라 모든 실행 파일을 실행할 수 있습니다. 예를 들어 calc.exe로 시도해 보세요.

실험적 환경 정리

여러 확장을 개발 중이거나 다른 버전의 확장 코드로 결과를 탐색하는 경우 실험적 환경이 제대로 작동하지 않을 수 있습니다. 이 경우 초기화 스크립트를 실행해야 합니다. Visual Studio 실험적 인스턴스 초기화라고 하며 Visual Studio SDK의 일부로 제공됩니다. 이 스크립트는 실험적 환경에서 확장에 대한 모든 참조를 제거하므로 처음부터 시작할 수 있습니다.

다음 두 가지 방법 중 하나로 이 스크립트를 확인할 수 있습니다.

  1. 바탕 화면에서 Visual Studio 실험적 인스턴스 초기화를 찾습니다.

  2. 명령줄에서 다음을 실행하세요.

    <VSSDK installation>\VisualStudioIntegration\Tools\Bin\CreateExpInstance.exe /Reset /VSInstance=<version> /RootSuffix=Exp && PAUSE
    
    

확장 배포

이제 도구 확장이 원하는 방식으로 실행되었으므로 이제 친구 및 동료와 공유하는 방법을 고려해야 합니다. Visual Studio 2015가 설치되어 있으면 쉽습니다. 빌드한 .vsix 파일을 보내기만 하면 됩니다. (반드시 릴리스 모드에서 빌드해야 합니다.)

이 확장에 대한 .vsix 파일은 FirstMenuCommand bin 디렉터리에서 찾을 수 있습니다. 특히 릴리스 구성을 빌드했다고 가정하면 다음 위치에 있습니다.

<코드 디렉터리>\FirstMenuCommand\FirstMenuCommand\bin\Release\FirstMenuCommand.vsix

확장을 설치하려면 친구가 Visual Studio의 열려 있는 모든 인스턴스를 닫은 다음, .vsix 파일을 두 번 클릭해야 합니다. 그러면 VSIX 설치 관리자가 나타납니다. 파일이 %LocalAppData%\Microsoft\VisualStudio<version>\Extensions 디렉터리에 복사됩니다.

친구가 Visual Studio를 다시 실행하면 도구>확장 및 업데이트에서 FirstMenuCommand 확장을 찾을 수 있습니다. 확장 및 업데이트로 이동하여 확장을 제거하거나 사용하지 않도록 설정할 수도 있습니다.

다음 단계

이 연습에서는 Visual Studio 확장으로 수행할 수 있는 작업의 일부만 보여주었습니다. 다음은 Visual Studio 확장으로 할 수 있는 다른 (합리적으로 쉬운) 작업의 짧은 목록입니다.

  1. 간단한 메뉴 명령을 사용하여 더 많은 작업을 수행할 수 있습니다.

    1. 나만의 아이콘 추가: 메뉴 명령에 아이콘 추가

    2. 메뉴 명령의 텍스트 변경: 메뉴 명령의 텍스트 변경

    3. 명령에 메뉴 바로 가기 추가: 메뉴 항목에 바로 가기 키 바인딩

  2. 다양한 종류의 명령, 메뉴 및 도구 모음 추가: 메뉴 및 명령 확장

  3. 도구 창 추가 및 기본 제공 Visual Studio 도구 창 확장: 도구 창 확장 및 사용자 지정

  4. 기존 코드 편집기에 IntelliSense, 코드 제안 및 기타 기능 추가: 편집기 및 언어 서비스 확장

  5. 확장에 옵션 및 속성 페이지와 사용자 설정 추가: 속성 및 속성 창 확장사용자 설정 및 옵션 확장

    다른 종류의 확장에는 새 유형의 프로젝트 만들기(프로젝트 확장) 또는 새 유형의 편집기 만들기(사용자 지정 편집기 및 디자이너 만들기)와 같은 조금 더 많은 작업이 필요합니다.