VisualStudio.Extensibility Preview 3으로 더 나은 확장 기능을 만드세요!

오늘, Visual Studio용 확장 프로그램 제작을 위한 새로운 SDK인 VisualStudio.Extensibility의 세 번째 공개 프리뷰를 발표하게 되어 매우 기쁘게 생각합니다!

VisualStudio.Extensibility SDK는 향상된 성능과 안정성을 위해 IDE에서 프로세스 외부에서 실행되는 확장 기능에 중점을 두고 있으며, 개발자의 생산성을 극대화하기 위해 간소화되고 신중하게 설계된 최신 API가 특징입니다.

VisualStudio.Extensibility 시작하기 미리보기 3

이번 릴리스는 1, 2차 공개 프리뷰를 기반으로 하며, 프로젝트 정보를 쿼리하고 수정할 수 있는 API와 멋진 디버거 비주얼라이저를 만드는 기능 등 몇 가지 중요한 기능을 제공합니다. 설명서 및 설치 지침을 보려면 VisualStudio.Extensibility 리포지토리를 방문하세요. 또한 이슈 트래커를 사용하여 버그를 보고하고 피드백을 제공할 수도 있습니다.

VisualStudio.Extensibility 프리뷰 3의 새로운 기능은 무엇인가요?

VisualStudio.Extensibility 프리뷰 3 릴리스에서는 다음과 같은 기능을 통해 강력한 생산성 확장 기능을 만들 수 있는 기능이 확장됩니다:

  • 디버거 비주얼라이저
  • 사용자 지정 대화 상자
  • 프로젝트 시스템 쿼리
  • 에디터 여백 확장
  • 확장 기능 구성

더 나은 디버깅을 위한 사용자 지정 데이터 시각화 도구 만들기

인기 있는 IEnumerable 비주얼라이저와 같은 디버거 비주얼라이저는 복잡한 데이터 유형에 대한 사용자 지정 보기를 활성화하여 Visual Studio의 디버깅 환경에 엄청난 기능을 추가합니다. 이번 릴리스에서는 원격 UI 기능을 활용하여 VisualStudio.Extensibility로 디버거 비주얼라이저를 만들 수 있습니다!
정규식 일치를 위한 디버거 시각화 도구
이 기능으로 만든 디버거 비주얼라이저를 빨리 보고 싶습니다!

사용자 지정 대화 상자를 통해 사용자와 상호 작용

VisualStudio.Extensibility의 마지막 릴리스에서는 간단하게 구성 가능한 버튼이 있는 프롬프트를 통해 사용자와 상호 작용할 수 있었습니다. 이제 버튼을 넘어 사용자 지정 UI가 포함된 대화 상자를 통해 사용자와 상호 작용할 수 있습니다.
사용자 지정 UI가 있는 대화 상자
대화창은 원격 UI 기능으로 지원되므로 WPF를 사용하여 풍부한 대화형 비주얼을 만든 다음 간단한 호출로 사용자에게 대화창을 표시할 수 있습니다:

| 사용자 지정 대화 상자를 표시하는 샘플 코드

public override async Task ExecuteCommandAsync(IClientContext context, CancellationToken cancellationToken)
{
    using IRemoteUserControl content = new MyDialogControl();
    await this.Extensibility.Shell().ShowDialogAsync(content, "My Dialog", DialogOption.Close, cancellationToken);
}

프로젝트 시스템에서 프로젝트 및 솔루션에 대한 정보 쿼리하기

최신 프리뷰에서는 프로젝트 시스템에서 특정 조건과 일치하는 솔루션의 프로젝트 또는 해당 프로젝트에 대한 정보를 쿼리할 수 있는 기능이 추가되었습니다. 예를 들어 이 쿼리 API를 사용하여 확장 프로그램에서 웹 관련 명령을 활성화하기 전에 솔루션에 웹 프로젝트가 있는지 감지할 수 있습니다:

| 주어진 기능 집합을 가진 솔루션의 모든 프로젝트를 찾기 위한 샘플 코드입니다.

IQueryResults<IProjectSnapshot> webProjects = await Extensibility.Workspaces().QueryProjectsAsync(
    project => project.Where(p => p.Capabilities.Contains("DotNetCoreWeb"))
                      .With(p => new { p.Path, p.Guid }),
    cancellationToken);

프로젝트 참조를 추가하거나 새 파일을 만드는 등 프로젝트를 수정할 수도 있습니다:

| 프로젝트에 새 텍스트 파일을 추가하는 샘플 코드

await Extensibility.Workspaces().UpdateProjectsAsync(
    project => project.Where(p => p.Name == "MyProject"),
    project => project.CreateFile("NewFile.txt", newFileContents),
    cancellationToken);

이러한 기능을 사용하면 확장 프로그램을 통해 사용자에게 작업 중인 코드와 직접적으로 연관된 경험을 제공할 수 있습니다!

편집기 여백 확장으로 중요한 컨텍스트 추가

개발자는 Visual Studio에서 대부분의 시간을 에디터에서 파일 및 문서 작업을 하는 데 보낸다는 것을 알고 있습니다. 편집기 여백 확장을 사용하면 원격 UI를 활용하여 개발자의 생산성을 높여주는 멋진 전면 중앙 환경을 만들어 많은 사용자에게 작업을 보여줄 수 있습니다. 이 기능을 사용하여 단어 수 또는 열린 문서의 인코딩과 같은 간단한 기능을 한눈에 볼 수 있을 뿐만 아니라 사용자 지정 탐색 모음이나 헤더를 만들 수도 있습니다!
하단 여백에 단어 수를 추가하는 편집기 여백 확장 기능

구성 속성을 사용하여 손쉽게 확장 프로그램을 구성하세요.

확장 기능에 정의된 많은 구성 요소는 IDE에 표시되는 방법이나 시기를 구성해야 합니다. 예를 들어, 명령을 정의하는 경우 도구 메뉴의 메뉴 항목 또는 도구 모음의 아이콘으로 구성할 수 있습니다. 도구 창을 정의하는 경우 도킹 또는 플로팅으로 구성할 수 있습니다.

사용자 테스트의 피드백을 바탕으로 확장 프로그램 구성을 완전히 개편하여 검색성과 사용성을 개선했습니다. 이제 강력하게 입력된 클래스 및 속성으로 확장 프로그램을 구성할 수 있으며, 미리 정의된 옵션을 검색하고 탐색하는 데 도움이 되는 IntelliSense를 사용할 수 있습니다. 이러한 변경 사항을 통해 확장 프로그램이 의도한 대로 작동하도록 할 수 있습니다.

변경 사항으로 인해 구성이 속성을 사용하여 다음과 같이 표시되지 않게 되었습니다:

| 이전 구성 속성을 사용한 명령 구성

[Command(
	"VisualStudio.Extensions.MarkdownLinter.RunLinterOnActiveDocument",
	"Run Linter on open file",
	containerType: typeof(MarkdownLinterExtension),
	placement: CommandPlacement.ToolsMenu)]
[CommandEnabledWhen(
	"FileSelected",
	new string[] { "FileSelected" },
	new string[] { "ClientContext:Shell.ActiveSelectionFileName=.+" })]
[CommandIcon("MarkdownIcon", IconSettings.IconAndText)]
internal class RunLinterOnCurrentFileCommand : Command

구성 속성을 사용하여 이와 같이 보이도록 설정합니다:

| 새 구성 속성을 사용한 명령 구성

[VisualStudioContribution]
internal class RunLinterOnCurrentFileCommand : Command
{
    public override CommandConfiguration CommandConfiguration => new("%RunLinterOnCurrentFileCommand.DisplayName%")
    {
        Placements = new[] { CommandPlacement.KnownPlacements.ToolsMenu },
        Icon = new(ImageMoniker.Custom("MarkdownIcon"), IconSettings.IconAndText),
        EnabledWhen = ActivationConstraint.ClientContext(ClientContextKey.Shell.ActiveSelectionFileName, ".+"),
    };

    ...
}

명령어 배치 제어

위의 구성 속성에서 볼 수 있듯이 알려진 메뉴 안에 명령을 쉽게 배치할 수 있지만, 사용자가 만들고 제어할 수 있는 새 메뉴 및 도구 모음에도 명령을 배치할 수 있습니다:

| 명령으로 툴바를 만들기 위한 샘플 코드

[VisualStudioContribution]
public static ToolbarConfiguration MyToolbar => new ToolbarConfiguration("%MyToolbar.DisplayName")
{
    Children = new[]
    {
        ToolbarChild.Command<MyCommand>(),
    },
}

명령에 키보드 단축키 추가

이제 간단한 키와 수정자 세트를 사용하여 명령에 대한 키보드 단축키를 설정할 수 있습니다:

| 명령에 대한 키보드 단축키를 설정하는 샘플 코드

public override CommandConfiguration CommandConfiguration => new("%MyCommand.DisplayName%")
{
    Shortcuts = new CommandShortcutConfiguration[]
    {
        new(ModifierKey.ControlShift, Key.G),
    },
};

여러분 없이는 이 일을 할 수 없습니다!

VisualStudio.Extensibility를 계속 개발하려면 여러분의 도움이 필요합니다! 프리뷰 3를 사용해 보시고 의견을 공유해 주세요. 이슈 트래커를 통해 피드백을 제공하고, 버그를 보고하고, 제안을 하고, 질문을 할 수 있습니다. 또한 여기에서 등록하여 향후 사용자 연구에 대한 연락을 받을 수 있으며, 이는 SDK를 통해 최상의 경험을 제공하기 위해 노력하는 데 매우 중요합니다.

지금 바로 시작할 수 있도록 설명서, 코드 샘플 및 설정 지침을 보려면 VisualStudio.Extensibility 리포지토리로 이동하세요!

VisualStudio.Extensibility 시작하기 미리보기 3


원문

3개의 좋아요