이 출시되었습니다! 11월의 새로운 기능 및 수정 사항을 읽어보세요.

2021년 4월 (버전 1.56)

업데이트 1.56.1: 이 업데이트는 이러한 보안 문제를 해결합니다.

업데이트 1.56.2: 이 업데이트는 이러한 문제를 해결합니다.

다운로드: Windows: x64 Arm64 | Mac: Universal Intel silicon | Linux: deb rpm tarball Arm snap


Visual Studio Code의 2021년 4월 릴리스에 오신 것을 환영합니다. VS Code 팀은 이번 달에 몇 가지 장기적인 업데이트 작업에 매진했습니다. 곧 출시될 기능에 대해 알아보려면 미리 보기 기능 섹션을 확인하세요. 이 릴리스에 포함된 주요 기능은 다음과 같습니다.

이 릴리스 노트를 온라인으로 읽으려면 code.visualstudio.com업데이트로 이동하십시오.

이번 릴리스의 새로운 기능에 대한 데모를 보고 라이브로 질문할 수 있도록 5월 11일 화요일 오전 8시(태평양 표준시, 런던 오후 4시)에 VS Code 팀 라이브스트림에 라이브로 참여하세요.

Insider: 새로운 기능을 최대한 빨리 사용해 보고 싶으신가요? 야간 빌드인 Insider 빌드를 다운로드하고 사용 가능한 최신 업데이트를 즉시 사용해 보세요.

워크벤치

개선된 작업 호버 피드백

작업 표시줄 전체의 작업에 대한 마우스 호버 피드백을 변경하여 클릭 가능한 작업에 대한 UX를 개선했습니다.

Actions hover feedback is improved with a background color.

제목 없는 편집기 힌트

많은 신규 사용자가 VS Code의 언어 지원을 제대로 받으려면 언어를 설정해야 한다는 사실을 인지하지 못하고 있다는 것을 확인했습니다. 이 문제를 해결하기 위해 제목 없는 편집기에 힌트를 도입하여 사용자가 올바른 언어 모드를 설정하도록 돕습니다. 제목 없는 힌트는 고급 사용자에게는 유용하지 않을 수 있으므로, 타이핑을 시작하면 즉시 사라지거나 **표시 안 함**을 선택하여 힌트가 다시 표시되지 않도록 할 수 있습니다.

Untitled editor shows an untitled hint

기본 사용자 지정 편집기 및 노트북 해상도

두 편집기 모두 리소스에 대한 기본 편집기임을 주장하는 경우(예: 이미지 뷰어 및 이미지 편집기), 충돌을 해결하라는 메시지가 표시됩니다.

아래 짧은 비디오에서는 사용자가 PNG 파일을 엽니다. 이 파일은 두 개의 편집기와 연결되어 있습니다. 이 알림은 사용자가 Luna Paint Image Editor를 계속 사용하거나 새 기본값을 구성할 수 있도록 허용하며, 사용자는 이를 수행하고 바이너리 Hex Editor를 사용하기 시작합니다.

A image editor is opened and the user is prompted with a notification to configure their default editor or keep the current one

업데이트된 사용자 지정 대화 상자

사용자 지정 대화 상자 스타일을 업데이트했으며, "window.dialogStyle": "custom"을 통해 활성화할 수 있습니다. VS Code는 이제 배경을 어둡게 하여 대화 상자에 더 집중하고, 여러 작업이 있을 때 보조 단추 스타일을 사용합니다.

An example of a custom dialog with a dimmed background and secondary buttons

제품 아이콘 테마: Fluent Icons

다음 색상 토큰을 사용하여 보조 단추 스타일을 테마화할 수 있습니다.

  • button.secondaryBackground
  • button.secondaryForeground
  • button.secondaryHoverBackground

활성화된 확장 프로그램만 자동 업데이트

이제 VS Code를 현재 활성화된 확장 프로그램만 자동 업데이트하도록 구성할 수 있습니다.

Auto update only enabled extensions

테마: GitHub Light Theme

터미널

프로필 개선

지난 반복에서는 터미널 프로필을 도입했습니다. 이제 터미널은 terminal.integrated.defaultProfile.<platform> 설정을 통해 기본 프로필을 설정하는 것을 지원합니다.

환경 및 아이콘 지원도 프로필 시스템에 추가되었습니다.

"terminal.integrated.profiles.windows": {
  "PowerShell": {
    "source": "PowerShell",
    "overrideName": true,
    "icon": "terminal-powershell",
    "env": {
      "TEST_VAR": "value"
    }
  }
},
"terminal.integrated.defaultProfile.windows": "PowerShell",

향후 이러한 설정은 기본 터미널 구성을 전환하는 권장 방법이며, terminal.integrated.shellterminal.integrated.shellArgs 설정은 사용 중단되었습니다.

새로운 터미널 선택기

프로필 및 설정 바로 가기가 드롭다운에서 새로운 **+** 단추와 드롭다운으로 이동했습니다.

When selected, the dropdown button displays a menu

기본값이 아닌 프로필을 기반으로 새 분할 터미널을 만드는 것도 지원합니다.

새로운 키 바인딩

이번 릴리스에서는 터미널에 여러 개의 새로운 기본 키 바인딩이 추가되었습니다.

  • 이전 터미널로 이동 - Ctrl+PageUp (macOS Cmd+Shift+])
  • 다음 터미널로 이동 - Ctrl+PageDown (macOS Cmd+shift+[)
  • 터미널 탭 보기 포커스 - Ctrl+Shift+\ (macOS Cmd+Shift+\) - 터미널 탭 미리 보기

항상 그렇듯이, 이러한 기본 키 바인딩은 키 바인딩 시스템을 통해 제거하거나 사용자 지정 키 바인딩을 추가할 수 있습니다.

Linux 선택 붙여넣기 명령

새로운 명령 workbench.action.terminal.pasteSelection은 Linux에서 선택 클립보드에서 터미널에 붙여넣는 데 사용할 수 있습니다.

터미널 작업 영역 쉘 권한 변경

프로필과 관련된 향후 변경 사항을 지원하기 위해 .vscode/settings.json에 터미널 설정이 포함되어 있을 때 표시되는 프롬프트가 작업 영역 설정 사용을 선택하는 설정으로 대체되었습니다. 이는 신뢰할 수 없는 작업 영역에서는 위험할 수 있습니다.

"terminal.integrated.allowWorkspaceConfiguration": true

작업 영역 신뢰가 기본적으로 활성화되면 이를 제거하고 해당 시스템을 사용합니다.

작업

작업 0.1.0 제거 및 업그레이드

작업 2.0.0은 3년 이상 사용 가능하며 잘 작동하고 있으며, 작업 0.1.0은 그 시간 동안 사용 중단되었습니다. Node.js 없는 렌더러 목표에 따라 작업 0.1.0은 Node.js 없는 환경으로 이전되는 대신 삭제되었습니다. 0.1.0 작업을 포함하는 폴더를 열면 자동으로 2.0.0 버전으로 업그레이드됩니다.

Tasks upgrade notification

터미널 탭에 "작업" 접두사 없음

새로운 터미널 탭 기능을 사용할 때, 터미널 이름에 "작업" 접두사가 더 이상 추가되지 않습니다. 대신, 작업은 "도구" 아이콘으로 표시되어 사용 가능한 공간을 더 잘 활용합니다.

Tasks as terminal tabs

eslint-stylish와의 더 나은 일치

$eslint-stylish 문제 표시기가 여러 줄의 문제를 더 정확하게 일치시킵니다.

디버깅

중단점 보기 개선

데이터 중단점에 대한 액세스 유형이 표시됩니다.

데이터 중단점의 경우, VS Code는 이제 중단점 보기에서 이름 옆에 액세스 유형("읽기", "쓰기" 또는 "액세스")을 표시합니다.

The Breakpoints view shows the access types "Read", "Write" and "Access" being rendered next to the breakpoint name

예외 중단점에 대한 더 나은 상태/오류 보고

예외 중단점의 경우, VS Code는 이제 중단점 보기에서 개별 확인 상태와 자세한 이유를 표시합니다. 예외 중단점을 확인할 수 없는 경우(예: 조건에 구문 오류가 포함된 경우) 회색으로 표시되며, 마우스를 올리면 해당 오류 메시지가 표시됩니다.

The Breakpoints view shows disabled exception breakpoints that on hover show the error message

기타 UI 개선

중지 및 연결 해제 명령에 대한 대체 동작

디버그 세션은 일반적으로 디버그: 중지디버그: 연결 해제 명령을 통해 중지됩니다. 디버그 세션이 launch 유형인 경우, 중지 명령은 세션을 중지할 뿐만 아니라 디버그 대상도 종료합니다. attach 유형 디버그 세션의 경우, 디버깅을 중지하고 디버그 대상의 실행을 재개하는 연결 해제 명령이 있습니다.

이번 릴리스에서는 디버그 도구 모음에서 명령을 트리거할 때 Alt 키를 누르고 있으면 이 동작을 전환할 수 있습니다. 동작을 변경하면 launch 유형 디버그 세션의 경우 디버그 대상 실행을 유지하고, attach 유형 디버그 세션의 경우 디버그 대상을 종료할 수 있습니다. 기본 명령에 Alt를 사용하는 것 외에도 명령 팔레트에서 launchattach 디버그 세션 모두에 대한 디버그: 중지디버그: 연결 해제 명령에 액세스할 수 있습니다.

대체 동작은 이 기능을 선택한 디버그 확장 프로그램에만 사용할 수 있습니다.

필수 디버그 확장 프로그램 설치 흐름 개선

사용자가 디버깅을 시작하려는 경우 필요한 언어 확장 프로그램(Python 또는 Java 등)이 설치되지 않은 경우 흐름을 개선했습니다. 이 경우 VS Code는 사용자에게 적절한 확장 프로그램을 설치하라는 메시지를 표시합니다.

VS Code prompts to install the Python extension if it is missing

호출 스택 열 중단 표시기

VS Code는 이제 디버그 대상이 줄에 중단될 때마다 호출 스택 열 표시기를 렌더링합니다. 이를 통해 프로그램이 현재 줄의 어느 위치에 중단되었는지 식별하는 데 도움이 됩니다.

An code execution is stopped and a column indicator is rendered in the middle of a line

일부 언어에 대한 인라인 값 기본 설정

VS Code의 디버거 UI는 소스 코드를 단계별로 실행할 때 편집기에서 변수 값을 인라인으로 표시하는 인라인 값을 지원합니다. 이 기능은 VS Code 코어의 일반적인 구현을 기반으로 하므로, 일반적인 접근 방식이 기본 소스 언어를 이해하지 못하기 때문에 때로는 잘못된 값을 표시하는 등 모든 언어에 완벽하게 맞지 않을 수 있습니다. 이러한 이유로 이 기능은 기본적으로 활성화되지 않았습니다.

새로운 디버거 확장 API를 통해 언어 확장 프로그램이 올바른 인라인 값 지원을 제공할 수 있게 되었으며, 개선된 인라인 값 기능을 기본적으로 활성화했습니다.

이 기능을 활성화하려면 debug.inlineValues 설정에 새로운 (기본) 값인 auto가 있습니다. auto로 설정하면, "개선된 인라인 값" 지원이 있는 언어에 대해 인라인 값이 자동으로 활성화됩니다.

Java 디버거 (Debugger for Java) 확장 프로그램은 API를 채택한 최초의 디버거 확장 프로그램 중 하나입니다. 아래 스크린샷에서는 Java 변수의 정확한 값이 사용량 옆에 표시됩니다.

Java extension displaying inline values in the editor while debugging

PowerShell 스크립트를 디버깅하면서 PowerShell용 인라인 값 지원 확장 프로그램을 사용하여 인라인 값을 얻을 수 있습니다.

중단 시 디버그 보기 표시

debug.openDebug 설정의 기본값은 이제 openOnDebugBreak이므로 모든 중단점 히트 시 VS Code가 디버그 보기를 엽니다. 디버그 보기는 첫 세션 시작 시에도 표시됩니다.

JavaScript 디버깅

평소와 같이 변경 사항 전체 목록은 vscode-js-debug 변경 로그에서 찾을 수 있습니다.

중단점 진단 도구 검색 가능성 개선

휴리스틱에 따라 (heuristics), VS Code는 사용자가 중단점 바인딩에 어려움을 겪고 있을 수 있다고 감지하면 중단점 진단 도구를 열도록 제안하는 알림을 표시합니다.

Notification that reads "It looks like you might be having trouble with breakpoints, would you like to open our diagnostic tool?"

이 프롬프트는 처음에는 효능과 단호함을 실험하기 위해 일부 사용자에게만 표시됩니다.

비공개 클래스 필드 지원

비공개 클래스 필드가 이제 디버거에서 보이고 검사할 수 있습니다.

노트북

줄 번호 전환

이제 현재 세션에서 셀의 줄 번호를 임시로 전환하거나 notebook.lineNumbers 설정을 통해 모든 노트북의 줄 번호 표시를 변경할 수 있습니다.

Toggle line number of a cell

파일 형식별 셀 도구 모음 위치

셀 도구 모음 위치는 이제 notebook.cellToolbarLocation 설정을 통해 파일 형식별로 사용자 지정할 수 있습니다. 예를 들어, GitHub 문제 노트북의 경우 셀 도구 모음을 오른쪽에, Jupyter 노트북의 경우 왼쪽에 둘 수 있습니다.

Markdown 셀에서의 수학 지원

이제 노트북 Markdown 셀 내에서 수학 방정식을 사용할 수 있습니다.

Math being rendered in a Jupyter notebook

VS Code는 방정식을 렌더링하기 위해 KaTeX를 사용합니다. Markdown 셀에 수학 방정식을 포함하는 두 가지 방법이 있습니다.

  • 단일 달러 기호 사용: $...$. 이렇게 하면 인라인 수학 방정식이 생성됩니다.
  • 이중 달러 기호 사용: $$...$$. 이렇게 하면 가운데 정렬된 블록 수학 방정식이 생성됩니다.

실험적인 노트북 마크업 렌더러 API를 사용하여 수학 지원을 구현했으며, 이 API는 아직 개발 중입니다. 이 API를 통해 궁극적으로 확장 프로그램이 노트북에서 Markdown 렌더링을 확장할 수 있도록 하는 것을 목표로 합니다.

언어

Markdown 미리 보기 타이포그래피 지원

새로운 markdown.preview.typographer 설정은 스마트 따옴표와 간단한 타이포그래피 대체를 기본 제공 Markdown 미리 보기에서 활성화할 수 있도록 합니다.

아래 예에서는 (c)와 같은 Markdown 텍스트가 미리 보기에서 저작권 기호 ©로 자동 대체됩니다.

Smart quotes and text replacement in the Markdown preview

markdown.preview.typographer 설정은 기본적으로 비활성화되어 있습니다.

더 많은 파일을 쉘스크립트로 인식

.xsession.xprofile 파일 확장자를 가진 파일은 자동으로 쉘스크립트로 인식됩니다.

미리 보기 기능

터미널 탭

터미널의 탭은 미리 보기 기능으로 제공되며 다음 설정을 통해 활성화할 수 있습니다.

"terminal.integrated.tabs.enabled": true

The tabs view is a split pane to the right of two split terminals. It contains icons and labels for each terminal instance.

활성화되면, 새 탭 보기는 기본적으로 최소 두 개의 터미널이 있을 때만 표시됩니다. 단일 터미널의 경우, 탭은 패널 제목에 "인라인"으로 표시됩니다.

Terminal tab inlined into the panel title for a single terminal

각 탭은 컨텍스트 메뉴를 통해 여러 작업에 대한 지원을 제공합니다.

Right-clicking on a tab displays a menu

마우스 호버 시 분할 및 종료 터미널을 사용할 수 있습니다.

Hovering the tab item shows inline action icons

새 탭의 동작은 탐색기 작동 방식과 유사하게 조정하려고 노력했습니다. 다음은 몇 가지 다른 동작입니다.

  • 빈 공간을 더블 클릭하면 새 터미널이 생성됩니다.
  • 구분선을 더블 클릭하면 탭 보기 너비가 모든 제목을 잘리지 않고 표시하는 "이상적인" 크기와 아이콘만 표시하는 좁은 보기 사이에서 전환됩니다.
  • terminal.integrated.tabs.location 설정을 사용하여 탭을 왼쪽에 배치할 수 있습니다.
  • terminal.integrated.tabs 아래에 다양한 기타 구성 설정이 있습니다.

터미널 상태

탭과 함께 터미널에 **상태** 개념을 도입했습니다. 터미널은 여러 상태를 가질 수 있으며, 각 상태는 터미널이 일시적으로 있을 수 있는 상태를 나타내며, 가장 높은 심각도의 상태가 탭 옆에 표시됩니다. 상태 아이콘은 탭 보기에서 터미널 제목 오른쪽에 나타납니다. 마우스를 올리면 상태 및 관련 작업에 대한 세부 정보가 표시됩니다.

On a tab associated with a terminal that requires a relaunch, a yellow triangle with an exclamation mark is to the right of the terminal title

현재는 이러한 상태가 지원됩니다.

  • 다시 시작 필요: 확장 프로그램이 터미널 환경을 변경하려고 하면 경고 아이콘 상태가 사용됩니다.
  • 연결 끊김: 터미널이 프로세스와의 연결이 끊어지면 플러그 아이콘 상태가 사용됩니다.
  • 벨: terminal.integrated.enableBell 설정에 의해 벨이 활성화되고 터미널 벨이 트리거되면 벨 아이콘이 나타납니다.

작업 실행 상태를 탭을 활성화하지 않고도 한눈에 볼 수 있도록 곧 작업 상태를 지원할 계획입니다.

시작 페이지 워크플로

시작 페이지에 콘텐츠를 배치하기 위한 walkthroughs 기여를 확장하여 단계 설명과 단계의 기본 콘텐츠 모두에서 Markdown을 사용할 수 있도록 했습니다. 시작 페이지에 대한 확장 프로그램 기여는 실험적인 기능이며 "workbench.welcomePage.experimental.extensionContributions": true,를 사용하여 활성화할 수 있습니다.

아래의 짧은 비디오는 사용자가 Luna Paint 확장 프로그램에 대해 배울 수 있는 예제 워크플로를 보여줍니다.

Stepping through the Luna Paint extension's walkthrough contribution

작업 표시줄 및 패널의 사용자 지정 호버 지원

이번 마일스톤에서는 작업 표시줄 및 패널에서 사용자 지정 호버에 대한 실험적 지원을 추가했습니다. workbench.experimental.useCustomHover 설정을 사용하여 사용자 지정 호버를 활성화할 수 있습니다.

Custom hover in Activity Bar and Panel

테마: GitHub Light Theme 제품 아이콘 테마: Fluent Icons

원격 리포지토리 (RemoteHub)

이 릴리스의 일부로, VS Code 내에서 GitHub 리포지토리를 로컬에 복제하거나 보유할 필요 없이 즉시 검색, 편집 및 커밋할 수 있는 새로운 기본 제공 확장 프로그램인 원격 리포지토리 (RemoteHub)를 미리 보고 있습니다. 현재는 VS Code의 Insiders 에디션에서만 사용할 수 있습니다.

시작하기

시작하려면 명령 팔레트에서 원격 리포지토리 열기... 명령을 실행하세요. 거기에서 모든 GitHub URL을 붙여넣거나 특정 리포지토리 또는 풀 요청을 검색하도록 선택할 수 있습니다.

Open Remote Repository picker

테마: Amethyst Dark Theme

URL을 입력하거나 리포지토리 또는 풀 요청을 선택하면 VS Code에서 해당 리포지토리에 대한 새 작업 영역이 열립니다. 상태 표시줄 왼쪽에 있는 원격 상태 표시기는 원격 리포지토리에 연결된 원격 공급자 이름(예: GitHub)을 표시합니다.

Remote Repositories Demo showing various source control operations

테마: Amethyst Dark Theme

기능

  • 리포지토리를 로컬에 복제하지 않고 즉시 GitHub 리포지토리를 엽니다.
  • 모든 GitHub 리포지토리를 쉽게 편집하고 기여하세요. 변경 사항을 GitHub에 직접 커밋하거나 풀 요청을 엽니다.
  • 다른 환경에서 계속 - 계속 명령을 통해 (명령 팔레트 또는 원격 표시기 빠른 선택 메뉴에서 액세스 가능).
    • 리포지토리 로컬 복제
    • 컨테이너에 리포지토리 복제 - Dev Containers 확장 프로그램 필요
  • 로컬 리포지토리에서 작업하는 것과 유사한 익숙한 사용자 인터페이스를 제공합니다 (*아래 "제한 사항" 참조).
    • 탐색기 - 파일 및 폴더 열기, 복사, 이동, 이름 바꾸기, 삭제
    • 검색 - 빠른 전체 텍스트 검색*
    • 소스 제어 - 변경 사항 스테이징 및 커밋, 그리고 기타 여러 소스 제어 작업
    • 타임라인 보기 - 파일 기록을 차이점 지원과 함께 확인
    • 빠른 열기 - 파일을 빠르게 찾아 열기
    • 원격 표시기 - 원격 리포지토리가 연결된 공급자(예: GitHub)를 표시합니다.
  • 여러 브랜치를 동시에 작업 - 각 원격 브랜치는 별도의 작업 트리(Git 용어)로 취급됩니다. 즉, 수행하는 모든 변경 사항은 해당 브랜치에 격리됩니다. PR을 확인하거나 새 작업 항목을 시작하기 위해 브랜치를 전환하기 위해 변경 사항을 스태시할 필요가 없습니다. 그리고 이전 브랜치로 돌아가면 변경 사항이 그대로 유지됩니다.
  • GitHub 풀 요청 및 문제 확장 프로그램을 설치하고 풀 요청을 빠르게 보고, 탐색하고, 체크아웃하고, 문제를 보고, 작업을 시작하세요.

제한 사항

  • 제한적인 언어 지능 - 많은 언어 서버가 아직 이 가상화된 환경을 이해하지 못합니다. TypeScript는 원격 리포지토리에 대한 단일 파일 지능을 지원합니다.
  • 제한적인 확장 프로그램 지원 - 언어 서버와 마찬가지로 많은 확장 프로그램이 원격 리포지토리와 작동하지 않습니다. 확장 프로그램은 옵트아웃할 수 있으며 가상 작업 영역에 대해 활성화되지 않습니다. 자세한 내용은 아래 확장 프로그램 작성 섹션을 참조하세요.
  • 검색 - 전체 텍스트 검색은 정확한 텍스트 일치를 위한 사전 빌드된 인덱스가 필요하며, 그렇지 않으면 GitHub의 기본 분기만 있는 퍼지 네이티브 검색으로 대체됩니다.
  • 터미널 - 지원되지 않습니다. 열린 터미널은 로컬 파일 시스템에 있습니다.
  • 디버깅 - 지원되지 않습니다.
  • 작업 - 지원되지 않습니다.

피드백 제공

원격 리포지토리 (RemoteHub)를 사용해 보시고 여러분의 의견과 피드백을 기다리겠습니다. 저희는 이제 막 이 여정을 시작했으므로, 개발을 계속함에 따라 기능 세트가 성장하고 제한 사항이 줄어들 것으로 예상됩니다. 또한 지원되는 공급자 세트도 확장할 예정입니다. GitHub는 저희가 지원하는 첫 번째 공급자이며, Azure Repos가 곧 제공될 예정입니다.

TypeScript 4.3

이 릴리스는 곧 출시될 TypeScript 4.3 릴리스에 대한 지원을 계속 개선합니다. TypeScript 4.3의 새로운 언어 기능 및 개선 사항에 대한 자세한 내용은 TypeScript 블로그에서 확인할 수 있습니다. 다음은 이를 지원하는 편집기 개선 사항입니다.

  • override 지원. override 키워드를 추가하는 빠른 수정도 있습니다.
  • 가져오기 문 완성. 이는 자동 가져오기와 유사하지만, 가져오기 문 자체를 입력하는 것입니다.
  • JSDoc @link 태그 지원.

TypeScript 4.3 야간 빌드를 사용하려면 TypeScript Nightly 확장 프로그램을 설치하기만 하면 됩니다. 피드백을 공유하고 TypeScript 4.3에서 버그가 발생하는 경우 알려주세요.

작업 영역 신뢰

지난 마일스톤 릴리스 노트에서 확장 프로그램 작성자를 위한 작업 영역 신뢰에 대해 공유했습니다. 이번 마일스톤에서 확장 프로그램 API와 사용자 경험 모두에 대해 큰 진전을 이루었습니다. 그렇긴 하지만, 작업 영역 신뢰는 이번 릴리스에서 비활성화된 상태로 유지될 것이지만, 여러분이 사용해 보고 피드백을 제공해 주시기를 바랍니다.

security.workspace.trust.enabled 설정을 사용하여 이 기능을 활성화할 수 있습니다. 활성화되면 VS Code에서 폴더를 열 때 다음 대화 상자가 표시됩니다.

Workspace Trust startup dialog

이 대화 상자는 사용자가 초기에 결정을 내리고 결정의 영향을 이해하는 데 중요합니다. 이 기능을 이해한 후에는 security.workspace.trust.startupPrompt 설정을 사용하여 대화 상자 표시 시기를 사용자 지정할 수 있습니다.

작업 영역 신뢰 개발을 따르고 이슈 #106488에서 피드백을 제공할 수 있습니다.

확장 프로그램 기여

원격 개발

컨테이너, 원격 머신 또는 Linux용 Windows 하위 시스템(WSL)을 전체 기능 개발 환경으로 사용할 수 있는 원격 개발 확장에 대한 작업이 계속 진행 중입니다.

1.56의 기능 하이라이트:

  • 컨테이너 볼륨에 리포지토리 복제 시 새 볼륨 보기.
  • 원격에 연결될 때 로컬 터미널 경고.
  • Dev Containers 확장 프로그램으로 시작 시 Docker Desktop 설치 프롬프트.

새로운 확장 프로그램 기능 및 버그 수정에 대해서는 원격 개발 릴리스 노트에서 확인할 수 있습니다.

GitHub Pull Requests 및 Issues

풀 요청 및 문제를 작업, 생성 및 관리할 수 있는 GitHub 풀 요청 및 문제 확장 프로그램에 대한 작업이 계속 진행 중입니다.

모든 새로운 기능 및 업데이트에 대해 알아보려면 확장 프로그램 0.26.0 릴리스의 전체 변경 로그를 확인할 수 있습니다.

확장 프로그램 작성

확장 프로그램이 가상 작업 영역을 지원하는지 여부 정의

새로운 원격 리포지토리 확장 프로그램을 사용하면 GitHub에서 직접 콘텐츠가 있는 폴더를 열 수 있습니다. 이는 가상 파일 시스템을 제공하고 그 위에 작업 영역을 열어 수행합니다. 다른 확장 프로그램도 마찬가지입니다. FTP 서버, 클라우드 스토리지 또는 데이터베이스에서 콘텐츠를 제공하고 VS Code에서 사용자에게 파일로 원활하게 제공합니다.

가상 파일 시스템 기능은 얼마 동안 존재해 왔지만, 모든 확장 프로그램이 가상 작업 영역(작업 영역 파일이 디스크에 물리적으로 존재하지 않는 경우)에서 실행을 지원하는 것은 아니라는 것을 관찰했습니다. 이러한 이유로 확장 프로그램이 가상 작업 영역에서 실행을 지원하는지 여부를 신호로 보낼 수 있는 지원을 추가했습니다. 확장 프로그램이 옵트아웃하면 VS Code에서 가상 작업 영역에 대해 활성화되지 않으며 사용자는 이 확장 프로그램의 오류를 보지 못하게 됩니다.

확장 프로그램은 아래와 같이 package.json에서 가상 작업 영역을 옵트아웃합니다.

{
  "capabilities": {
    "virtualWorkspaces": false
  }
}

목표는 가능한 많은 확장 프로그램이 가상 작업 영역에서 실행을 지원하는 것입니다. 그러나 파일이 물리적으로 존재한다고 가정하는 구성 요소를 사용하는 확장 프로그램의 경우 항상 가능한 것은 아닙니다. 가상 작업 영역 가이드는 확장 프로그램이 가상 작업 영역을 지원하는 방법을 문서화합니다.

실행 촉구: 확장 프로그램이 가상 작업 영역을 처리할 수 있는지 확인하고 package.json에서 virtualWorkspaces 기능을 적절하게 설정하십시오.

확장 프로그램이 새 virtualWorkspaces 속성을 채택할 때까지 전환 기간이 있습니다. 그 전까지는 virtualWorkspaces 기능이 false로 설정되어야 한다고 생각하는 확장 프로그램 목록을 내부적으로 유지합니다. 이는 확장 프로그램이 Node.js fs 모듈을 사용하고 따라서 파일 시스템에 직접 액세스하는지 여부에 대한 분석을 기반으로 수행되었습니다. 그러나 확장 프로그램 작성자는 확장 프로그램이 virtualWorkspaces 기능을 지원하는지 여부를 평가할 수 있는 훨씬 더 나은 위치에 있습니다. 채택을 추적하기 위해 다음 추적 이슈 #122836을 만들었습니다. 확장 프로그램이 목록에 있고 virtualWorkspaces 기능을 채택했다면, 위 이슈에 댓글을 추가해 주세요.

원격 표시기 메뉴

확장 프로그램은 이제 원격 표시기 메뉴에 기여할 수 있습니다.

Remote indicator on the left of the Status bar

statusBar/remoteIndicator 메뉴 기여 지점은 원격 표시기 메뉴에 명령을 추가합니다.

"contributes": {
    "menus": {
        "statusBar/remoteIndicator": [
        {
          "command": "remote-wsl.newWindow",
          "when": "!remoteName && isWindows",
          "group": "remote_10_wsl_0_local@1"
        }
    ]},
    "commands": [
      {
        "command": "remote-wsl.newWindow",
        "title": "New WSL Window",
        "category": "Remote-WSL"
      }
    ]
}

메뉴가 공급자별로 항목을 정렬할 수 있도록 group은 특정 구문을 따라야 합니다.

원격의 명령의 경우: remote_${orderOfGroups}_${remoteName)_${internalGrouping}@${orderInGroup}

가상 파일 시스템의 명령의 경우: virtualfs_${orderOfGroups}_${fileScheme)_${internalGrouping}@${orderInGroup}

  • orderOfGroups는 그룹을 정렬하는 데 사용되는 2자리 숫자입니다.
  • remoteName은 원격 권한의 첫 번째 부분입니다(wsl, ssh, ...).
  • fileScheme은 가상 파일 시스템의 URI 스키마입니다.
  • internalGrouping은 각 기여에 대해 자유롭게 사용할 수 있습니다.
  • orderInGroup은 그룹 내 항목을 정렬하는 데 사용됩니다.

예: remote_10_wsl_1-open@1

대부분의 웹뷰에 iframe 사용

웹뷰 API가 처음 도입된 이후로, 저희는 Electron의 웹뷰 태그를 사용하여 웹뷰를 구현했습니다. 그러나 웹에서는 <webview>를 사용할 수 없기 때문에 VS Code의 웹뷰는 표준 <iframe> 요소를 사용하여 구현됩니다.

데스크톱 버전의 VS Code를 <iframe> 기반 웹뷰를 사용하도록 마이그레이션하는 것을 오랫동안 탐구해 왔습니다. 이 변경으로 인해 확장 프로그램은 데스크톱과 웹 간에 보다 일관된 웹뷰 환경을 갖게 될 것입니다. <webview>에서 마이그레이션하는 것은 Electron 샌드박싱 노력을 돕는 데도 도움이 될 것입니다.

이번 반복에서는 대부분의 웹뷰를 iframe을 사용하도록 전환했습니다. <webview> 태그는 이제 찾기 위젯을 활성화하는 웹뷰에만 사용되며, 추가 엔지니어링 작업을 거쳐 이들도 iframe을 사용하도록 마이그레이션할 계획입니다.

이 변경으로 인해 문제가 발생해서는 안 되지만, <iframe><webview> 요소의 동작이 다른 몇 가지 코너 케이스가 있습니다. 모든 것이 예상대로 작동하는지 확인하기 위해 확장 프로그램을 빠르게 테스트해 보세요.

웹뷰 검사 용이성

<iframe> 기반 웹뷰의 분명한 이점은 이제 검사하기가 훨씬 쉬워졌다는 것입니다.

이전에 웹뷰 작업을 해본 적이 있다면, 웹뷰 내용을 검사하기 위해 개발자: 웹뷰 개발자 도구 열기 명령을 사용해야 했다는 것을 기억할 것입니다. 이렇게 하면 웹뷰 전용의 새 개발자 도구 패널이 열립니다.

Inspecting a webview in its own developer tools window

<iframe> 기반 웹뷰를 사용하면 대신 VS Code의 표준 개발자 도구(개발자: 개발자 도구 토글)를 사용하여 웹뷰를 검사할 수 있습니다.

Inspect a webview in the main developer tools window

이를 통해 여러 웹뷰를 쉽게 검사할 수 있습니다. 또한 개발자 도구는 웹뷰가 사라져도 닫히지 않습니다.

또한 웹뷰 내부에서 발생하는 예외 및 콘솔 메시지가 최상위 개발자 도구 콘솔에 인쇄됩니다.

Exceptions from a webview printed in the main developer tools

개발자 도구를 사용하여 웹뷰의 컨텍스트에서 표현식을 평가할 수도 있습니다. 개발자: 개발자 도구 토글로 VS Code 개발자 도구를 연 후, 콘솔을 열고 컨텍스트 선택기에서 웹뷰의 active-frame을 선택합니다.

Selecting the current scope of the debug console

전반적으로 VS Code의 표준 개발자 도구를 사용할 수 있다는 것은 웹뷰 개발 경험을 더욱 향상시킬 것입니다.

CodeActionTriggerKind

CodeActionContext의 새로운 triggerKind 속성은 Code Action이 CodeActionProvider에서 요청되는 이유를 추적합니다. 이 속성의 가능한 값은 다음과 같습니다.

  • Invoke - 키보드 단축키 또는 명령을 사용하여 명시적으로 Code Action이 요청되었습니다.
  • Automatic - 명시적인 사용자 작업 없이 Code Action이 요청되었습니다. 여기에는 문서 내용이 변경될 때 Code Action을 요청하는 것이 포함됩니다.

공급자는 Code Actions가 요청되는 방식에 따라 다른 결과 집합을 반환하기 위해 triggerKind를 사용할 수 있습니다. 예를 들어, 자동으로 트리거되는 리팩토링 Code Action 공급자는 Code Action 전구의 표시 빈도를 제한하기 위해 현재 선택된 항목에 대해서만 리팩토링을 반환할 수 있습니다. 그러나 Code Actions가 명시적으로 요청되는 경우, 동일한 공급자는 사용자가 현재 위치에서 관심을 가질 만한 모든 리팩토링을 표시하기 위해 현재 선택 영역을 자동으로 확장할 수 있습니다.

업데이트된 코드 아이콘

저희는 코드 아이콘 라이브러리에 다음의 새로운 아이콘을 추가했습니다.

  • arrow-swap
  • copy
  • debug-line-by-line
  • filter-filled
  • person-add
  • terminal-bash
  • terminal-cmd
  • terminal-debian
  • terminal-linux
  • terminal-powershell
  • terminal-tmux
  • terminal-ubuntu
  • wand

List displaying updated codicons with their names

키 바인딩 레이블 색상

키 바인딩 레이블은 명령과 연관된 키 바인딩이 있을 때 표시됩니다. 키 바인딩 레이블의 용도는 다음과 같으며 이에 국한되지 않습니다.

  • 명령 팔레트
  • 키보드 단축키 편집기
  • 키보드 단축키 기록 모달
  • 확장의 마켓플레이스 페이지의 "기능 기여" 섹션

다음과 같은 사용자 지정이 가능합니다.

  • keybindingLabel.background: 키 바인딩 레이블 배경색. 키 바인딩 레이블은 키보드 단축키를 나타내는 데 사용됩니다.
  • keybindingLabel.foreground: 키 바인딩 레이블 전경색. 키 바인딩 레이블은 키보드 단축키를 나타내는 데 사용됩니다.
  • keybindingLabel.border: 키 바인딩 레이블 테두리 색상. 키 바인딩 레이블은 키보드 단축키를 나타내는 데 사용됩니다.
  • keybindingLabel.bottomBorder: 키 바인딩 레이블 아래쪽 테두리 색상. 키 바인딩 레이블은 키보드 단축키를 나타내는 데 사용됩니다.

작업 영역 신뢰 확장 API

지난 마일스톤에서 작업 영역 신뢰라는 기능에 대해 작업하고 있음을 언급했습니다. 확장 개발자들에게 업데이트를 위해 issue #120251을 주시하도록 요청했으며, 계속해서 그렇게 할 것입니다. 다음 정보 및 업데이트도 해당 이슈에서 찾을 수 있습니다.

이번 마일스톤에서는 작업 영역 신뢰 확장 API를 제안에서 안정으로 이전했습니다. 이를 통해 작업 영역 신뢰 온보딩 가이드의 첫 번째 버전을 출시할 수 있었습니다. API는 작으므로 간단히 살펴보겠습니다.

package.jsonuntrustedWorkspaces 기능을 사용하여 확장 프로그램이 신뢰할 수 없는 작업 영역에서 완전 지원, 부분 지원 또는 미지원으로 선언할 수 있습니다.

다음 예는 확장이 신뢰할 수 없는 작업 영역에서 완전히 지원됨을 선언합니다. 이 경우 확장은 신뢰할 수 없는 작업 영역에서 활성화됩니다.

"capabilities": {
  "untrustedWorkspaces": {
    "supported": true
  }
}

다음 예는 확장이 신뢰할 수 없는 작업 영역에서 지원되지 않음을 선언합니다. 이 경우 확장은 신뢰할 수 없는 작업 영역에서 비활성화됩니다.

"capabilities": {
  "untrustedWorkspaces": {
    "supported": false
  }
}

세 번째 옵션은 limited 지원을 선언하는 것입니다. limited 옵션을 선택할 때 사용할 수 있는 세 가지 도구가 있습니다.

첫째, 작업 영역에서 구성할 수 있지만 해당 값을 적용하려면 작업 영역을 신뢰해야 하는 설정이 있는 경우, untrustedWorkspaces 객체의 restrictedConfigurations 배열 속성을 사용하여 해당 설정을 포함할 수 있습니다. 이렇게 하면 VS Code는 확장 프로그램이 VS Code 작업 영역 구성 API를 사용하여 이러한 제한된 설정의 값을 읽을 때 작업 영역 값을 무시합니다.

다음 예는 신뢰할 수 없는 작업 영역에서 제한되는 설정을 선언합니다.

"capabilities": {
  "untrustedWorkspaces": {
    "supported": "limited",
    "restrictedConfigurations": [
      "markdown.styles"
    ]
  }
}

다음으로, API를 사용하여 현재 작업 영역이 신뢰할 수 있는지 여부를 프로그래밍 방식으로 확인하고 수신 대기할 수도 있습니다.

export namespace workspace {
  /**
   * When true, the user has explicitly trusted the contents of the workspace.
   */
  export const isTrusted: boolean;
  /**
   * Event that fires when the current workspace has been trusted.
   */
  export const onDidGrantWorkspaceTrust: Event<void>;
}

마지막으로, when 절에서 isWorkspaceTrusted 컨텍스트 키를 사용하여 명령 또는 보기를 선언적으로 숨길 수 있습니다.

실행 유도: issue #120251의 "작업 영역 신뢰 확장 가이드"를 검토하고 확장에 적합하게 untrustedWorkspaces.supported 값을 설정하십시오.

제안된 확장 API

모든 마일스톤에는 새로운 제안 API가 제공되며 확장 작성자는 이를 사용해 볼 수 있습니다. 언제나처럼 여러분의 피드백을 원합니다. 제안된 API를 사용하려면 다음을 수행해야 합니다.

  • 제안된 API는 자주 변경되므로 Insiders를 사용해야 합니다.
  • 확장의 package.json 파일에 이 줄이 있어야 합니다: "enableProposedApi": true.
  • vscode.proposed.d.ts 파일의 최신 버전을 프로젝트 소스 위치로 복사합니다.

제안 API를 사용하는 확장은 게시할 수 없습니다. 다음 릴리스에서 호환성이 깨지는 변경 사항이 있을 수 있으며, 기존 확장을 깨뜨리는 일은 절대 없을 것입니다.

기본 노트북

기본 노트북 API의 대부분을 최종화하기 위해 준비하고 있습니다. 수많은 작은 조정과 주요 변경 사항을 적용했습니다.

노트북 직렬화 프로그램

NotebookSerializer API를 추가했습니다. "바이트"를 NotebookData로 변환하고 그 반대의 변환을 단순화하는 방법을 제공합니다. 이 API를 구현하면 노트북에서 백업, 되돌리기, 변경 상태 등과 같은 기능을 무료로 사용할 수 있습니다. 확장 개발자는 이 새로운 API를 채택하고 이전 콘텐츠 공급자 기반 API를 사용하지 않는 것이 좋습니다.

노트북 컨트롤러

노트북 컨트롤러 API는 커널 공급자 API를 대체합니다. 노트북 컨트롤러는 노트북의 실행 엔진을 제공하며 노트북 출력을 생성합니다. 노트북은 여러 컨트롤러를 제공하거나 제공하지 않을 수 있으며 VS Code는 사용자가 컨트롤러를 선택하도록 합니다. 그 대가로 확장은 도메인 모델의 요구 사항에 따라 컨트롤러를 생성, 수정 및 제거할 수 있습니다.

노트북 셀 상태 표시줄

NotebookCellStatusBarItemProvider API는 createCellStatusBarItem 메서드를 대체합니다. 이를 통해 확장은 레이블, 아이콘 및 명령이 있는 항목을 모든 셀 편집기의 맨 아래 상태 표시줄에 기여할 수 있습니다. 이는 많은 다른 VS Code 확장 API와 동일한 공급자 패턴을 따릅니다.

테스트

이번 달에 새로운 테스트 API의 일부를 최종화할 예정이었지만, 개선 작업에 집중하여 다음 달로 최종화를 연기했습니다. 이는 issue #122208에서 추적됩니다. 이번 반복에서 이루어진 API 변경 사항은 주로 다음과 같습니다.

  • TestProvider의 이름이 TestController로 변경되었고 해당 메서드 이름도 마찬가지로 변경되었습니다.
  • TestItem은 이제 vscode.test.createTestItem으로 호출되는 관리 대상 객체입니다.
  • 테스트 결과는 이제 TestController.runTests 내외부에서 호출할 수 있는 표준 vscode.test.createTestResults 메서드를 통해 생성됩니다.

이러한 변경과 함께 원시 테스트 출력을 표시하고 확장이 테스트 로드 시 오류를 표시하는 기능과 같은 몇 가지 추가 기능이 제공되었습니다. 이러한 변경이 향후 추가 기능에 대한 견고한 기반을 제공하고 기존 확장 API에 더 가깝게 정렬된다고 믿습니다.

또한 기존 Test Explorer UI 확장과 함께 작동하는 모든 어댑터가 기본 VS Code 테스트에 자동으로 통합될 수 있도록 하는 Test Adapter Converter 확장을 만들었습니다. 변환기 확장은 오늘 수동으로 설치할 수 있으며, 곧 Test Explorer UI와 통합되어 기존 사용자와 어댑터가 기본 테스트로 원활하게 마이그레이션할 수 있도록 경로를 제공할 것입니다.

웹뷰로 및 웹뷰에서 ArrayBuffer의 전송 개선

현재 버전의 VS Code에서는 웹뷰로 또는 웹뷰에서 유형 배열을 전송하는 데 몇 가지 까다로운 점이 있습니다.

  • UInt8Array와 같은 유형 배열은 매우 비효율적으로 직렬화됩니다. 많은 메가바이트의 데이터를 전송해야 할 때 성능 문제가 발생할 수 있습니다.
  • 전송된 유형 배열은 수신 측에서 올바른 유형으로 다시 생성되지 않습니다. UInt8Array를 보내면 수신자는 대신 UInt8Array의 데이터 값을 가진 일반 객체를 받습니다.

이 두 가지 문제 모두 버그이지만, 기존 동작에 의존하는 확장에 잠재적으로 영향을 줄 수 없이는 수정할 수 없습니다. 동시에 새로 작성된 확장이 현재의 혼란스럽고 비효율적인 동작을 원할 이유는 전혀 없습니다.

따라서 기존 확장에 대한 기존 동작은 그대로 유지하되, 새로운 확장은 더 올바른 동작을 선택하도록 했습니다. 이는 확장의 package.json에서 engines를 확인하여 수행됩니다.

"engines": {
  "vscode": "^1.57.0",
}

확장이 VS Code 1.57 이상을 대상으로 하는 경우, 유형 배열은 수신 측에서 다시 생성되어야 하며 웹뷰로 또는 웹뷰에서 대규모 유형 배열의 전송이 훨씬 더 효율적이어야 합니다.

이 동작을 테스트하고 예상대로 작동하지 않거나 기존 코드에 예상치 못한 회귀를 유발하는 경우 알려주십시오.

TerminalOptions.message

이 새로운 제안을 통해 확장은 프로세스가 시작되기 전에 터미널에 메시지를 표시할 수 있습니다.

vscode.window.createTerminal({
  message: '\x1b[3;1mSome custom message\x1b[0m'
});

디버그 어댑터 프로토콜

예외 중단점이 일반 중단점과 더 잘 정렬됨

setExceptionBreakpoints 요청은 이제 다른 set*Breakpoints 요청과 유사하게 선택적으로 Breakpoint 배열을 반환할 수 있습니다. 이를 통해 클라이언트는 개별 예외 중단점 또는 필터에 대한 유효성 검사 오류 메시지를 표시할 수 있습니다. 이 릴리스부터 VS Code는 중단점 보기에서 이러한 오류를 표시합니다.

다시 시작 요청이 디버그 구성 변경 사항을 적용할 수 있게 됨

restart 요청은 이제 새 선택적 매개변수 arguments를 받으며, 클라이언트는 최신 버전의 시작 또는 연결 구성을 전달할 수 있습니다. 이 추가를 통해 디버그 어댑터는 디버그 구성의 최신 값을 사용하여 세션을 다시 시작할 수 있습니다.

디버거 연결 해제 및 디버그 대상 일시 중단 유지

disconnect 요청은 디버그 세션을 종료하고 디버그 대상의 실행을 계속하거나 종료하는 데 사용됩니다. 디버거가 연결을 해제한 후 디버그 대상을 일시 중단된 상태로 유지하는 새 옵션이 있습니다. 이렇게 하면 새 세션으로 디버깅을 다시 시작할 수 있습니다.

이 기능을 구현하는 디버그 어댑터는 supportSuspendDebuggee 기능으로 지원을 알려야 합니다. 클라이언트는 disconnect 요청에 새 선택적 인수 suspendDebuggee를 전달하여 기능을 사용할 수 있습니다.

엔지니어링

Electron 12 업데이트

이번 마일스톤에서 Electron 12를 VS Code에 번들링하는 탐색을 완료했습니다. Insiders를 테스트하고 자체 호스팅한 모든 분들께 감사드립니다. 이것은 주요 Electron 릴리스이며 Chromium 89.0.4389.114 및 Node.js 14.16.0과 함께 제공됩니다.

Electron 샌드박스 진행 상황

이번 마일스톤에서는 Electron의 샌드박스컨텍스트 격리 기능을 활성화하기 위해 VS Code 창을 계속 준비했습니다.

구체적으로

  • 샌드박스 처리기에서 VS Code 창에 필요한 모든 환경 속성에 액세스할 수 있도록 변경했습니다.
  • 가능한 특정 경우에 iframe을 선택적으로 활성화하여 사용자 지정 편집기의 경우 webview 대신 iframe 요소로 전환하는 것을 탐색하고 있습니다.
  • 처리기에서 필요한 일부 네이티브 모듈 또는 Node.js 요구 사항을 다른 프로세스로 이동하거나 완전히 제거했습니다.
  • windows-process-tree가 컨텍스트 인식되도록 만들었습니다.

서비스 워커가 이제 웹뷰에서 리소스를 로드하는 데 사용됩니다.

데스크톱 VS Code에서는 이제 웹뷰가 로컬 리소스를 로드하기 위해 서비스 워커를 사용합니다. VS Code의 웹 버전은 항상 이를 위해 서비스 워커를 사용했지만, 이전 데스크톱 VS Code는 Electron 프로토콜을 사용했습니다.

데스크톱 버전에서 서비스 워커를 사용하면 데스크톱 및 웹 간의 웹뷰 동작을 더 잘 일치시킬 수 있습니다. 또한 몇 가지 까다로운 버그를 수정하고 약 1000줄의 코드를 삭제할 수 있었습니다.

이 변경 사항은 대부분의 웹뷰 확장에 영향을 미치지 않아야 하지만, 몇 가지 엣지 케이스에서는 문제가 발생할 수 있습니다.

  • 웹뷰가 리소스를 로드하는 방식에 대한 가정을 하는 확장

    확장에서 vscode-webview-resource: 프로토콜을 직접 사용했거나 리소스 URI에 대한 기타 가정을 하드코딩한 경우 더 이상 작동하지 않을 수 있습니다.

    대신, 항상 .asWebviewUri를 사용하여 리소스 URI를 생성해야 합니다. 또한 반환된 URI의 형식이 향후 변경될 수 있다는 점을 기억하십시오.

  • iframe의 src를 디스크의 HTML 파일로 가리키도록 설정한 확장

    서비스 워커는 이 요청을 볼 수 없으므로 더 이상 지원하지 않습니다. 웹에서는 이미 이와 같았으며, 이 패턴이 일반적이라고 생각하지 않습니다.

    권장 수정 사항은 iframe을 사용하지 않고 HTML 파일의 내용을 웹뷰에 직접 인라인으로 포함하는 것입니다.

코드베이스에서 암시적 재정의 비활성화

다가오는 TypeScript 4.3 릴리스에는 컴파일러에게 하위 클래스의 메서드가 슈퍼 클래스의 메서드를 재정의함을 알리는 새 override 키워드가 포함됩니다. 슈퍼 클래스의 메서드를 재정의하는 모든 메서드가 override 키워드를 사용하도록 강제하는 새 --noImplicitOverride 플래그도 있습니다.

class Foo {
   foo() {...}
}

class SubFoo extends Foo {
    foo() { ... } // Error when noImplicitOverride is enabled: missing override specifier
}

override 키워드는 몇 가지 장점이 있습니다.

  • 코드를 읽을 때 해당 메서드가 기본 클래스의 메서드를 재정의하고 있음을 알려줍니다.

  • 기본 클래스에 존재하지 않는 메서드를 재정의하려고 하면 오류가 발생합니다. 이는 기본 클래스에서 메서드 이름을 바꾸고 하위 클래스의 메서드 이름을 업데이트하는 것을 잊은 경우 오류를 잡는 데 도움이 될 수 있습니다.

이번 반복에서는 코드베이스에 override 키워드를 채택하고 핵심 VS Code와 모든 내장 확장에 대해 --noImplicitOverride를 활성화했습니다. 이 작업의 대부분은 자동화되었지만, 이 변경으로 인해 코드가 잘못된 속성을 다시 선언했거나 상속 패턴이 불분명했던 몇 가지 사례를 발견하는 데 도움이 되었습니다.

이 새로운 엄격한 규칙은 향후 몇 가지 일반적인 프로그래밍 실수를 잡는 데도 도움이 될 것입니다.

Windows 설치 프로그램이 Windows 패키지 관리자에 통합됨

arm64용 사용자 및 시스템 설치 프로그램을 게시하고 v1 패키지 매니페스트 스키마를 채택하도록 Windows 패키지 관리자 게시 파이프라인을 업데이트했습니다. 이를 통해 x86, x64arm64에 대한 사용자 및 시스템 설치 프로그램을 단일 매니페스트로 통합할 수 있습니다. 사용자는 패키지를 설치할 때 --scope 매개변수를 사용하거나 winget CLI 설정을 사용하여 사용자 및 시스템 설치 프로그램 중에서 선택할 수 있습니다.

문서

소개 동영상 업데이트

VS Code 소개 동영상이 업데이트되었습니다. 동영상은 시작하기확장 사용부터 디버깅버전 관리와 같은 VS Code 기능까지 다양합니다.

Intro to Debugging in VS Code video

새로운 C++ 동영상

C++ 확장 팀에서 IntelliSense 구성, C++ 프로젝트 빌드 및 디버깅 방법을 설명하는 소개 동영상 세트를 제작했습니다.

VS Code의 스토리와 기술

VS Code의 역사와 기본 기술에 대해 VS Code 엔지니어인 Ben Pasero와의 인터뷰에서 읽을 수 있습니다. Ben은 VS Code 초창기와 Electron을 애플리케이션 프레임워크로 사용하여 VS Code를 macOS, Windows 및 Linux에서 실행할 수 있게 된 경험에 대해 이야기합니다.

파트너 확장

Azure Machine Learning

Azure Machine Learning 확장을 통해 머신 러닝 워크플로를 위한 강력한 클라우드 컴퓨팅 리소스를 생성하고 관리할 수 있습니다. 원격 기능으로 안전하고 감사 가능하며 규정을 준수하는 방식으로 컴퓨팅 리소스에 원활하게 연결할 수 있습니다.

Microsoft Azure Machine Learning extension

주요 수정 사항

  • 108559: RunInTerminal이 작업 영역 설정에서 지정된 통합 터미널을 사용하지 않는 버그
  • 118282: 디버거 단계 건너뛰기 skipFiles
  • 118731: 비동기적으로 브라우저 창 및 탭을 열 때 Safari의 팝업 차단기를 피하는 방법 조사
  • 119340: 예외 없는 중단점이 활성화된 경우 디버그 없이 실행이 종료되지 않음
  • 121347: 백업에서 복원 시 파일에 잘못된 문자가 포함됨
  • 119059: 사용자 지정 텍스트 편집기: 복원 시 백업이 편집기 2개 열림
  • 120245: CSS: !important 자동 완성 오류
  • 120393: WebGL 컨텍스트 손실 처리 개선
  • 120435: emmet.extensionsPath 유효 경로 검사 제거
  • 120882: 탐색기에서 파일 붙여넣기가 더 이상 해당 파일을 편집기에서 열지 않음
  • 121148: 디버그 드롭다운에 중복된 시작 구성 표시
  • 120277: 파일에서 찾기 창의 가로 스크롤 막대가 너무 작고 잘못 스크롤됨

감사합니다

마지막으로, 이번 달 VS Code에 기여해주신 다음 분들께 진심으로 감사드립니다.

이슈 추적에 대한 기여

vscode 기여

vscode-eslint 기여

vscode-json-languageservice 기여

vscode-vsce 기여

debug-adapter-protocol에 기여

vscode-js-debug 기여

vscode-generator-code에 대한 기여

© . This site is unofficial and not affiliated with Microsoft.