다음을 통해 공유


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

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

메뉴 명령 만들기

  1. FirstMenuCommandVSIX 프로젝트를 만듭니다. "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. private 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. 이제 사용해 보세요. 프로젝트 디버깅을 시작하고 Tools>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 설치 관리자표시해야 합니다. 파일은 \Microsoft\VisualStudio<버전>\Extensions 디렉터리%LocalAppData%복사됩니다.

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

다음 단계

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

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

    1. 고유한 아이콘 추가: 메뉴 명령에 아이콘 추가

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

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

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

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

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

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

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