다음을 통해 공유


2022LogoVisual Studio 2022 버전 17.0 릴리스 정보


Visual Studio 2022 출시 이벤트의 기록을 시청하여 새로운 기능에 대해 알아보고, 팁과 요령을 듣고, 무료 디지털 스웨그를 다운로드하세요.

Developer Community | Visual Studio 2022 로드맵 | 시스템 요구 사항 | 호환성 | 배포 가능 코드 | 릴리스 기록 | 사용 조건 | 블로그 | 최신 릴리스 알려진 문제 | Visual Studio 문서의 새로운 기능


Visual Studio 2022 버전 17.0

Visual Studio 2022 버전 17.0에 대한 지원은 2023년 7월에 종료되었습니다. 즉, 이 버전에 대한 보안 업데이트는 더 이상 없습니다. Visual Studio 2022 17.0 LTSC 채널을 사용하는 엔터프라이즈 및 전문 구독자는 최신 현재 채널 또는 LTSC 릴리스를 채택해야 합니다.

Visual Studio 2022 릴리스 및 지원 날짜에 대해 알아봅니다.

Visual Studio 제품 수명 주기 및 서비스에 대해 알아봅니다.

Visual Studio 2022 제품의 최신 버전에 대한 링크에 액세스하려면 Visual Studio 사이트를 방문하세요. Visual Studio 2022 설치 및 업데이트에 대한 지침은 Visual Studio 2022를 최신 릴리스로 업데이트하는 방법을 참조하세요. Visual Studio 관리자 가이드에는 조직 전체에 Visual Studio를 배포하는 방법에 대한 지침이 포함되어 있습니다.

Visual Studio 2022 버전 17.0 릴리스

Visual Studio 2022 블로그

Visual Studio 2022 블로그는 Visual Studio 엔지니어링 팀의 제품 인사이트를 제공하는 공식 사이트입니다. 다음 게시물에서 Visual Studio 2022 릴리스에 대한 자세한 정보를 찾을 수 있습니다.


17.0.23 Visual Studio 2022 버전 17.0.23

릴리스 날짜: 2023년 7월 11일

이 17.0.23 릴리스에서 해결된 문제

  • Microsoft는 SmtpClient 클래스에서 발생할 수 있는 SMTP 주소 주입 가능성이 있는 취약성을 알고 있습니다. 이는 CVE-2022-26893에 해당합니다(취약성이 보통으로 평가되므로 게시된 CVE가 아님).

해결된 보안 권고


17.0.22 Visual Studio 2022 버전 17.0.22

릴리스 날짜: 2023년 6월 13일

이 17.0.22 릴리스에서 해결된 문제

  • Microsoft는 SmtpClient 클래스에서 발생할 수 있는 SMTP 주소 주입 가능성이 있는 취약성을 알고 있습니다. 이는 CVE-2022-26893에 해당합니다(취약성이 보통으로 평가되므로 게시된 CVE가 아님).

해결된 보안 권고


17.0.21 Visual Studio 2022 버전 17.0.21

릴리스 날짜: 2023년 4월 11일

이 17.0.21 릴리스에서 해결된 문제

  • 커널 모드 드라이버에 대한 PGO 학습 중에 사용된 드라이버에 잘못된 입력이 전송될 때 발생하는 충돌을 해결합니다.
  • IIS Express에서 원격 분석 데이터를 업데이트할 때 충돌이 발생할 수 있는 문제를 해결했습니다.
  • Microsoft는 SmtpClient 클래스에서 발생할 수 있는 SMTP 주소 주입 가능성이 있는 취약성을 알고 있습니다. 이는 CVE-2022-26893에 해당합니다(취약성이 보통으로 평가되므로 게시된 CVE가 아님).

개발자 커뮤니티

해결된 보안 권고


17.0.20 Visual Studio 2022 버전 17.0.20

릴리스 날짜: 2023년 3월 14일

이 17.0.20 릴리스에서 해결된 문제

  • Microsoft는 SmtpClient 클래스에서 발생할 수 있는 SMTP 주소 주입 가능성이 있는 취약성을 알고 있습니다. 이는 CVE-2022-26893에 해당합니다(취약성이 보통으로 평가되므로 게시된 CVE가 아님).
  • Git 2.39에서 credential.helper 값의 이름을 "manager-core"에서 "manager"로 변경했습니다. 자세한 내용은 https://aka.ms/gcm/rename를 참조하세요.
  • mingit 및 Windows용 Git 패키지를 v2.39.2로 업데이트합니다. 이 패키지는 CVE-2023-22490을 해결합니다.

해결된 보안 권고


17.0.19 Visual Studio 2022 버전 17.0.19

릴리스 날짜: 2023년 2월 14일

17.0.19 릴리스에서 해결된 문제

  • CPython 인터프리터를 버전 3.9.13으로 업데이트했습니다.
  • mingit 및 Windows용 Git 패키지가 CVE-2022-41903을 해결하는 v2.39.1.1로 업데이트됨

해결된 보안 권고

17.0.18 Visual Studio 2022 버전 17.0.18

릴리스 날짜: 2023년 1월 10일

해결된 보안 권고

  • CVE-2023-21538 .NET 서비스 거부 취약성 .NET 6.0에는 악의적인 클라이언트가 스택 오버플로를 발생시킬 수 있는 서비스 거부 취약성이 있으며 공격자가 노출된 엔드포인트에 잘못된 요청을 보낼 때 서비스 거부 공격이 발생할 수 있습니다.

17.0.17 Visual Studio 2022 버전 17.0.17

릴리스 날짜: 2022년 12월 13일

해결된 보안 권고

  • CVE-2022-41089 원격 코드 실행 원격 코드 실행 취약성이 .NET Core 3.1, .NET 6.0 및 .NET 7.0에 있습니다. 악의적인 행위자가 악의적으로 생성된 xps 파일을 구문 분석한 결과로 사용자가 임의의 코드를 실행하도록 할 수 있습니다.

17.0.16 Visual Studio 2022 버전 17.0.16

릴리스 날짜: 2022년 11월 8일

이 17.0.16 릴리스에서 해결된 문제

해결된 보안 권고


17.0.15 Visual Studio 2022 버전 17.0.15

릴리스 날짜: 2022년 10월 11일

이 17.0.15 릴리스에서 해결된 문제

  • 관리자는 VS를 업데이트하지 않고도 레이아웃에서 오프라인 클라이언트 컴퓨터의 VS Installer를 업데이트할 수 있습니다.

해결된 보안 권고

  • CVE-2022-41032 .NET 권한 상승 취약성 A 취약성은 악의적인 행위자가 사용자가 임의 코드를 실행하도록 할 수 있는 .NET 7.0.0-rc.1, .NET Core 3.0, .NET Core 3.1 및 NuGet 클라이언트(NuGet.exe, NuGet.Commands, NuGet.CommandLine, NuGet.Protocol)에 존재합니다.

17.0.14 Visual Studio 2022 버전 17.0.14

릴리스 날짜: 2022년 9월 13일

이 17.0.14 릴리스에서 해결된 문제

해결된 보안 권고

CVE-2022-38013 .NET 서비스 거부 취약성 A 서비스 거부 취약성은 ASP.NET Core 3.1 및 .NET 6.0에 존재합니다. 여기서 악의적인 클라이언트는 스택 오버플로를 유발하여 공격자가 모델 바인딩 중에 구문 분석된 사용자 지정된 페이로드를 보낼 때 서비스 거부 공격을 초래할 수 있습니다.


17.0.13 Visual Studio 2022 버전 17.0.13

릴리스 날짜: 2022년 8월 9일

이 17.0.13 릴리스에서 해결된 문제

  • 17.1.4 업데이트 후 Git 오류 해결 - Visual Studio를 통해 git 리포지토리를 안전한 것으로 표시하는 옵션을 제공하는 Visual Studio 피드백입니다.
  • MinGit을 버전 2.37.1.1로 업데이트하여 CVE - CVE-2022-29187(mitre.org)를 해결합니다. 그러면 사용자는 자신이 소유한 리포지토리로 이동하지만 다른 사용자가 작성할 수 있는 취약성에 노출되어 악성 코드를 실행하기 위해 악용될 수 있습니다.
  • Windows용 Git을 CVE-2022-31012 주소 지정 v2.37.1.1로 업데이트합니다.

해결된 보안 권고


17.0.12 Visual Studio 2022 버전 17.0.12

릴리스 날짜: 2022년 7월 12일

17.0.12 릴리스에서 해결된 문제

  • cdnjs API에 대한 변경 내용을 수용하도록 LibraryManager가 업데이트됨
  • 문서를 열 때 텍스트 편집기가 비어 있거나 입력할 때 충돌이 발생하는 버그가 수정되었습니다.

해결된 보안 권고

  • CVE-2022-24513 권한 상승 취약성 Microsoft Visual Studio 업데이트 서비스가 로컬 구성 데이터를 잘못 구문 분석하는 경우 권한 상승 취약성이 존재합니다.

17.0.11 Visual Studio 2022 버전 17.0.11

릴리스 날짜: 2022년 6월 14일

이 17.0.11 릴리스에서 해결된 문제

  • 함께 개발 16.11 C++ 도구 집합을 버전 14.29.30145.00으로 업데이트했습니다. 개발 16.11 C++ 도구 집합의 최신 버전에는 나머지 모든 C++20 결함 보고서 수정을 비롯한 중요한 버그 수정이 포함되어 있습니다. 자세한 내용은 16.11.14 릴리스 정보를 참조하세요.

Developer Community

해결된 보안 권고


17.0.10 Visual Studio 2022 버전 17.0.10

릴리스 날짜: 2022년 5월 10일

17.0.10 릴리스에서 해결된 문제

  • Visual Studio에서 사용하는 Windows 버전 및 설치 가능한 선택적 구성 요소에 대한 Git을 2.36.0.1로 업데이트했습니다.
  • 분기된 분기를 풀 또는 동기화하는 경우 출력 창에 확인 방법에 대한 지역화된 힌트가 표시되지 않는 git 통합 관련 문제를 해결했습니다.
  • Visual Studio에서 Git 리포지토리를 열 때 출력 창에 오류가 발생하는 이유 및 해결 방법 대신 "하나 이상의 오류가 발생했습니다."가 표시되는 문제를 해결했습니다.
  • Daytona에서 webview2 기준을 업데이트했습니다.

Developer Community

해결된 보안 권고

[CVE-2022-29117 .NET 서비스 거부 취약성 .NET 6.0, .NET 5.0 및 .NET Core 3.1에 악의적인 클라이언트가 쿠키를 조작하고 서비스 거부를 일으킬 수 있는 취약성이 있습니다.

CVE-2022-23267 .NET Core 서비스 거부 취약성 .NET 6.0, .NET 5.0 및 .NET Core 3.1에 악의적인 클라이언트가 HttpClient를 통해 과도한 메모리 할당을 통해 서비스 거부를 일으킬 수 있는 취약성이 있습니다.

CVE-2022-29145 .NET 서비스 거부 취약성 .NET 6.0, .NET 5.0 및 .NET Core 3.1에 악의적인 클라이언트가 HTML 형식이 구문 분석되면 서비스 거부를 일으킬 수 있는 취약성이 있습니다.

CVE-2022-24513 권한 상승 취약성 Microsoft Visual Studio 업데이트 서비스가 로컬 구성 데이터를 잘못 구문 분석하는 경우 권한 상승 취약성이 존재합니다.


17.0.9 Visual Studio 2022 버전 17.0.9

릴리스 날짜: 2022년 4월 19일

17.0.9 릴리스에서 해결된 문제

  • 17.0.8에서 vctip.exe 회귀 수정
  • ASAN(Address Sanitizer)으로 빌드된 일부 애플리케이션이 Windows 11에서 로드되지 않도록 하는 버그가 수정되었습니다.
  • 힙 경합이 있는 다중 스레드 애플리케이션에서 교착 상태, 거짓 “와일드 포인터 해제” 보고서 또는 프로세스 종료 중에 교착 상태가 발생할 수 있는 또 다른 ASAN 문제가 해결되었습니다.
  • ‘오프라인 머신에 Visual Studio에 대한 확장(vsix)을 설치할 수 없음’ 문제가 해결되었습니다.

17.0.8 Visual Studio 2022 버전 17.0.8

릴리스 날짜: 2022년 4월 12일

17.0.8 릴리스에서 해결된 문제

Developer Community

해결된 보안 권고

CVE-2022-24765 권한 상승 취약성 Windows용 Git에 Git 디렉터리를 검색할 때 Git 작업이 리포지토리 외부에서 실행될 수 있는 권한 상승 취약성이 존재합니다. Windows용 Git이 버전 2.35.2.1로 업데이트되었습니다.

CVE-2022-24767 DLL 하이재킹 취약성 SYSTEM 사용자 계정으로 Windows용 Git 설치 제거 프로그램을 실행할 때 DLL 하이재킹 취약성이 존재합니다. Windows용 Git이 버전 2.35.2.1로 업데이트되었습니다.

CVE-2022-24513 권한 상승 취약성 Microsoft Visual Studio 업데이트 서비스가 로컬 구성 데이터를 잘못 구문 분석하는 경우 권한 상승 취약성이 존재합니다.


17.0.7 Visual Studio 2022 버전 17.0.7

릴리스 날짜: 2022년 3월 8일

17.0.7 릴리스에서 해결된 문제

  • 새로 고침 빈도가 높은 모니터의 성능이 향상되었습니다.
  • Community SKU 사용자가 Visual Studio를 시작하는 중 중단되는 문제를 해결했습니다.

Developer Community

Developer Community에 17.0에서 사용할 수 있는 전체 픽스 목록이 있습니다.

해결된 보안 권고

CVE-2020-8927 취약성 .NET 5.0 및 .NET Core 3.1에는 1.0.8 이전의 Brotli 라이브러리 버전에서 버퍼 오버플로가 발생하는 원격 코드 실행 취약성이 있습니다.

CVE-2022-24464 취약성 .NET 6.0, .NET 5.0, .NET CORE 3.1에는 특정 형식의 http 폼 요청을 구문 분석할 때 발생하는 서비스 거부 취약성이 있습니다.

CVE-2022-24512 취약성 .NET 6.0, .NET 5.0, .NET Core 3.1에는 .NET 이중 구문 분석 루틴에서 스택 버퍼 오버런이 발생하는 원격 코드 실행 취약성이 있습니다.

CVE-2021-3711 OpenSSL 버퍼 오버플로 취약성 OpenSSL에는 Git for Windows에서 사용되는 잠재적인 버퍼 오버플로 취약성이 있습니다. 이제 Git for Windows가 이 문제를 해결하는 버전 2.35.1.2로 업데이트되었습니다.


17.0.6 Visual Studio 2022 버전 17.0.6

릴리스 날짜: 2022년 2월 8일

17.0.6 릴리스에서 해결된 이슈

  • 채널 메타데이터를 제대로 기록하도록 Visual Studio 설치 관리자를 업데이트했습니다.
  • Visual Studio 설치 관리자에 설치 또는 업데이트에 대한 공지를 릴리스했습니다.
  • 업데이트 설정 대화 상자에 LTSC 채널 만료 날짜 정보를 추가했습니다.
  • 실제로 업데이트를 수행하는 경우와 별개로 업데이트의 소스 위치를 프로그래밍 방식으로 변경하는 기능을 추가했습니다. 이렇게 하면 IT 관리자가 업데이트 채널을 프로그래밍 방식으로 변경할 수 있습니다.
  • 성공률을 높이기 위해 GitHub를 업데이트하여 계정 환경을 추가했습니다.

해결된 보안 권고

CVE-2022-21986 취약성 Kestrel 웹 서버가 특정 HTTP/2 and HTTP/3 .요청을 처리하는 경우에 .NET 5.0 과 .NET 6.0에 서비스 거부 취약성이 존재합니다.


17.0.5 Visual Studio 2022 버전 17.0.5

릴리스 날짜: 2022년 1월 13일

17.0.5 릴리스에서 해결된 이슈

  • 휘발성 메타데이터를 사용하여 이진을 계측할 때 가끔 VSInstr이 종료되지 않고 계측 프로파일링이 실패하는 문제가 해결되었습니다.
  • 이진과 함께 PDB를 생성할 때 link.exe가 때때로 충돌하거나 중단되는 문제가 해결되었습니다.
  • 정수 오버플로로 인해 호출 프로세스가 충돌하는 C++ Concurrency::parallel_for_each의 버그가 수정되었습니다.
  • C++20 및 C++Latest 언어 모드에서 ATL의 CString 비교 버그가 수정되었습니다.
  • 많은 수의 pogo 프로브를 사용할 때 arm64 및 arm64ec에서 PGI된 이진을 실행하는 동안 발생하는 크래시가 해결되었습니다.
  • 매우 큰 함수를 최적화하면 잘못된 코드가 생성될 수 있는 문제가 해결되었습니다.

17.0.4 Visual Studio 2022 버전 17.0.4

릴리스 날짜: 2021년 12월 16일

17.0.4 릴리스에서 해결된 이슈

  • Xcode 13.2 지원을 추가했습니다.

17.0.3 Visual Studio 2022 버전 17.0.3

‘릴리스 날짜: 2021년 12월 14일’

이 17.0.3 릴리스에서 해결된 문제

양방향 텍스트 컨트롤 문자 렌더링

코드가 잘못 표현되는 악의적인 익스플로잇을 방지하기 위해 Visual Studio 편집기는 양방향 텍스트 제어 문자가 편집 화면의 문자 순서를 조작하는 것을 허용하지 않습니다. 새 옵션을 선택하면 이러한 양방향 텍스트 컨트롤 문자가 자리 표시자와 함께 표시됩니다. 이 동작은 코드 편집기에서 렌더링되는 내용에만 영향을 주기 때문에 양방향 텍스트 컨트롤 문자는 코드에 계속 존재합니다.

양방향 텍스트 컨트롤 문자가 자리 표시자로 대체된 VS

이 기능은 도구\옵션에서 제어합니다. 텍스트 편집기\일반 페이지에는 기본적으로 검사되는 "양방향 텍스트 컨트롤 문자 표시" 옵션이 있습니다. 이 옵션을 선택하면 모든 양방향 텍스트 컨트롤 문자가 자리 표시자로 렌더링됩니다. 이 옵션을 선택 취소하면 이러한 문자가 렌더링되지 않는 이전 동작으로 돌아갑니다.

유니코드 문자는 U+061c, U+200e-U+200f, U+202a-U+202e, U+2066-U+2069 범위에 속하는 경우 양방향 텍스트 컨트롤 문자로 간주됩니다.

  • Web Forms 디자이너에서 크래시 수정
  • !important에 대한 CSS 완성으로 HTML 또는 Razor 파일의 잘못된 위치에 텍스트가 삽입되는 문제를 해결했습니다.
  • SignalR과 같이 유사한 종속성을 공유하는 라이브러리와 충돌하는 Xamarin.Forms XAML 핫 다시 로드로 회귀를 수정했습니다. 이제 Xamarin.Forms XAML 핫 다시 로드가 애플리케이션에 로드된 내용에 관계없이 상호 운용될 수 있습니다.
  • 때때로 프로젝트 개요 페이지, 진단 도구 또는 성능 프로파일러 창이 비는 문제를 해결했습니다.
  • 레이저 파일 편집 시 커서가 입력 중간에 다른 위치로 이동하는 문제를 해결했습니다.

Developer Community

Developer Community에 17.0에서 사용할 수 있는 전체 픽스 목록이 있습니다.

해결된 보안 권고

CVE-2021-43877 .NET 취약성 ANCM에는 권한 상승 취약성이 있습니다. 이로 인해 .Net Core, .NET 5, .NET 6 애플리케이션이 IIS 내에서 호스트될 때 권한이 상승할 수 있습니다.

CVE-2021-42574 양방향 텍스트 취약성 양방향 텍스트 컨트롤 문자를 사용하여 코드가 편집기에서 디스크에 포함된 것과 다르게 렌더링되도록 할 수 있습니다.


17.0.2 Visual Studio 2022 버전 17.0.2

릴리스 날짜: 2021년 11월 30일

이 17.0.2 릴리스에서 해결된 문제

  • 겹치는 데이터가 있는 memmove와 같은 작업의 잘못된 자동 codegen 수정
  • C++ 모듈 또는 헤더 단위를 사용할 때 표시되는 메시징이 출력 창에 추가되었습니다. 여기에는 IntelliSense와 함께 모듈 또는 헤더 단위를 사용할 때의 알려진 문제가 포함됩니다.
  • CMake 개요 페이지 및 CMakeSettings 편집기가 “IntelliSense 초기화를 완료할 때까지 대기 중...”을 나타내며 중단되는 문제 해결
  • 데이터 멤버 이니셜라이저가 있는 클래스 계층 구조와 관련된 템플릿 소멸자가 너무 일찍 인스턴스화되어 정의되지 않은 형식 사용에 대한 잘못된 진단 또는 기타 오류를 발생할 수 있는 문제를 수정했습니다.
  • Python 워크로드에 Python 3.9.7이 추가되었습니다. 보안 취약성으로 인해 Python 3.7.8이 제거되었습니다.
  • 다음 찾기(F3) 및 다음 선택 찾기(Ctrl+F3)가 경우에 따라 다음에 나오는 항목 대신 파일의 첫 번째 항목으로 이동되는 문제를 해결했습니다.
  • 버전 제어 사용자 인터페이스의 날짜가 고객의 운영 체제 로캘과 맞지 않는 문제를 해결합니다.
  • 고객이 Windows 터미널을 기본값으로 설정하며, 디버거가 콘솔 앱 디버깅을 제대로 중지하지 못하고 향후 시작을 방지하지 못하는 Windows 11의 문제를 해결합니다.

Developer Community

Developer Community에 17.0에서 사용할 수 있는 전체 픽스 목록이 있습니다.


17.0.1 Visual Studio 2022 버전 17.0.1

릴리스 날짜: 2021년 11월 16일

이 17.0.1 릴리스에서 해결된 문제

  • 일괄 처리 빌드를 사용할 때의 충돌을 해결했습니다.
  • XAML 핫 다시 로드를 사용하도록 설정한 상태에서 Xamarin.Forms 프로젝트를 시작할 때의 충돌 문제가 해결되었습니다.

Developer Community

Developer Community에 17.0에서 사용할 수 있는 전체 픽스 목록이 있습니다.

17.0.0 Visual Studio 2022 버전 17.0.0

릴리스 날짜: 2021년 11월 8일

Visual Studio 2022 버전 17.0.0 릴리스의 새로운 기능 요약

64비트

  • devenv.exe가 이제 64비트 전용

Azure Cloud Services

  • 새로운 Azure 클라우드 서비스(클래식) 프로젝트는 Azure에서 신규 고객을 위해 사용되지 않기 때문에 지원되지 않습니다. Azure 클라우드 서비스(추가 지원) 프로젝트가 권장되는 대체 프로젝트입니다.
  • 기존 Azure 클라우드 서비스(클래식) 프로젝트는 열 수 있고 완전히 지원됩니다.

C++

  • v143 빌드 도구는 이제 Visual Studio 설치 관리자와 독립 실행형 빌드 도구를 통해 사용할 수 있습니다.
  • 이제 디버거에서 실행할 때 네이티브 C++ 애플리케이션에서 새로운 핫 다시 로드 환경을 사용할 수 있습니다. MSBuild 및 CMake 프로젝트를 모두 지원합니다. 자세한 내용은 아래의 핫 다시 로드 섹션을 참조하세요.
  • 이제 SSH 연결을 설정하지 않고도 WSL2에서 기본적으로 빌드 및 디버그할 수 있습니다. 플랫폼 간 CMake 프로젝트와 MSBuild 기반 Linux 프로젝트가 모두 지원됩니다.
  • Visual Studio는 현재 CMakePresets.json의 buildPresets.targets 옵션을 지원합니다. 이를 통해 CMake 프로젝트에서 대상의 하위 집합을 빌드할 수 있습니다.
  • CMake 프로젝트의 프로젝트 메뉴가 간소화되었으며 "캐시 삭제 및 다시 구성 " 및 "캐시 보기"에 대한 옵션이 표시됩니다.
  • CMake 개요 페이지가 CMakePresets.json을 지원하도록 업데이트되었습니다.
  • P1689r4에 설명된 대로 CMake 프로젝트에 대한 C++20 모듈 종속성 출력을 위한 /scanDependencies 플래그가 구현되었습니다. 이는 CMake를 통해 모듈 기반 프로젝트를 빌드하기 위한 지원 단계이며, 이후 릴리스에서 이 지원을 완료하기 위해 노력하고 있습니다.
  • 원격 시스템에서 실행되는 프로세스를 Visual Studio에서 LLDB를 사용하여 디버그할 수 있습니다.
  • Visual Studio와 함께 제공되는 CMake 버전을 버전 3.21로 업그레이드했습니다. 사용 가능한 항목에 대한 자세한 내용은 CMake 3.21 릴리스 정보를 참조하세요.
  • Visual Studio와 함께 제공되는 LLVM 도구가 LLVM 12로 업그레이드되었습니다. 자세한 내용은 LLVM 릴리스 정보를 참조하세요.
  • 이제 MSVC 도구 집합은 디버그 레코드의 SHA-256 원본 해시로 기본 설정됩니다. 이전에는 도구 집합이 기본적으로 원본 해시에 MD5를 사용했습니다.
  • 이제 C++를 사용한 게임 개발 워크로드가 Visual Studio 2022를 지원하는 최신 Unreal Engine을 설치합니다.
  • 가져온 모듈 및 헤더 단위의 형식에 대한 탐색 및 구문 강조 표시를 제공하는 경우 C++ IntelliSense 기능이 개선되었습니다.
  • 캐시된 헤더 사용 및 기호 데이터베이스 액세스를 최적화하여 C++ IntelliSense 성능을 향상함으로써 코드로 가져올 수 있는 로드 시간이 향상되었습니다.
  • 이제 C++용 IntelliSense 코드 Linter가 기본적으로 설정되어 입력에 따른 즉각적인 제안 및 일반적인 코드 결함에 대한 수정 제한 사항을 제공합니다.
  • 스위치 -fsanitize=fuzzer에서 libfuzzer를 지원합니다. 자세한 내용은 설명서를 참조하세요.
  • 코드 분석 도구에서 Null 포인터 역참조 검색이 향상되었습니다.
  • 이제 코드 분석에서 _Check_return_ 또는 _Must_inspect_result_로 주석이 지정된 함수의 반환 값을 확인해야 합니다.
  • gsl::not_null에 대한 지원이 코드 분석에 추가되었습니다.
  • C++ 모바일 개발 워크로드의 NDK r21 LTS로 업데이트되었습니다.
  • C++ AMP 헤더는 이제 사용되지 않습니다. C++ 프로젝트에 <amp.h>를 포함하면 빌드 오류가 발생합니다. 오류를 해결하려면 _SILENCE_AMP_DEPRECATION_WARNINGS를 정의합니다. 자세한 내용은 AMP 사용 중단 링크를 참조하세요.

디버깅 및 진단

  • 프로세스에 연결 대화 상자 개선
  • 예외 도우미 개선 사항
  • 강제 실행 클릭
  • 메모리 덤프 진단 분석
  • 종속 중단점이라는 새로운 유형의 중단점을 릴리스했습니다. 이를 통해 다른 중단점이 처음 적중된 경우에만 중단점을 사용하도록 구성할 수 있습니다.
  • 외부 원본 노드에 더 많은 업데이트를 추가했습니다. 이제 하위 노드 "원본이 없는 모듈"에서 모듈을 보고 솔루션 탐색기 자체에서 기호를 로드할 수 있습니다.
  • 중단점 여백 향상
  • 임시 중단점
  • 중단점 끌어서 놓기
  • 솔루션 탐색기의 외부 소스 노드
  • 프로세스에 연결 대화 상자 개선

개인 설정

  • 세로 및 가로 탭에 대해 탭 색 지정을 추가했습니다.
  • 테마 팩을 추가했으며 VS Code 테마 작성자와 협업하여 사용자 지정 테마 컬렉션을 출시했습니다.
  • Visual Studio 2022에서 작동하도록 VS Code 테마를 변환하는 테마 변환기를 작성했습니다.
  • Visual Studio 테마를 Windows 테마와 동기화하기 위한 기능을 추가했습니다.
  • 탭 너비 사용자 지정, 활성 문서 굵게 표시 및 docwell의 추가 닫기 단추 등을 비롯한 새로운 문서 관리 기능을 추가했습니다.

편집기

  • 부분 단어 탐색이 추가됨
  • 이제 자동 저장이 미리 보기 기능으로 제공됨
  • 다중 캐럿 복사/붙여넣기 환경

확장성

  • Microsoft.VisualStudio.Language.Client 어셈블리에서 API 제거
  • VS SDK에는 호환성이 손상되는 변경이 몇 가지 포함되어 있으며 2022년에는 Visual Studio 2019 확장이 작동하지 않습니다. 자세한 내용은 VSSDK 설명서를 참조하세요.
  • VS SDK 참조 어셈블리가 더 이상 VSSDK\VisualStudioIntegration\Common\Assemblies 폴더에 설치되지 않습니다. 빌드가 이러한 어셈블리를 사용하는 경우 NuGet 패키지를 대신 사용하도록 프로젝트를 마이그레이션하세요. 오프라인 시나리오의 경우:
    1. nuget 패키지를 복원할 조직 내 nuget 피드를 유지합니다.
    2. 이진을 체크 인합니다.
  • ILanguageClient 호환성이 손상되는 변경 수정 사항이 추가됨

Cloud Services

  • Azurite는 더 이상 적극적으로 개발되지 않는 이전 Azure Storage Emulator 대신 Azure Storage의 로컬 에뮬레이션에 사용됩니다.

Git 도구

  • 미리 보기 플래그에서 여러 리포지토리에 걸쳐 있는 솔루션(즉, 다른 Git 리포지토리에서 호스트되는 프로젝트가 포함된 솔루션)에 대한 다중 리포지토리 지원
  • 이제 Azure DevOps에 게시가 Git 리포지토리 만들기 환경에서 완벽하게 지원됨
  • 빈 VS에서 리포지토리를 보고 열 수 있는 새로운 기능풀하지 않은 커밋 수 표시 기능을 포함하여 상태 표시줄의 기능 향상
  • 이제 Git 변경 내용 창의 오버플로 메뉴를 추가 Git 작업이 포함된 로컬 전용 리포지토리에서 사용할 수 있음
  • 추가/삭제된 줄 수와 검색 가능한 구성 옵션을 포함하는 통합 Diff 도구 모음
  • 응답성이 향상되고 사용자에게 친숙한 UI를 비롯한 커밋 세부 정보 향상

도움말 메뉴

  • 17.0 동안, 시작 자료 및 유용한 팁/요령을 사용하여 도움말 메뉴를 리모델링했습니다.
  • Developer Community, 릴리스 정보, Visual Studio 제품 로드맵 및 소셜 미디어 페이지에 대한 액세스와 같은 항목을 추가하여 개발 팀과 더욱 긴밀한 협업을 제공합니다.

핫 다시 로드 환경

  • .NET 개발자는 이제 많은 .NET 6 애플리케이션 유형에 대한 디버거 없이도 Visual Studio 디버거를 통해 핫 다시 로드를 사용할 수 있습니다.
  • 이제 Visual Studio 디버거를 사용하는 경우 C++ 개발자는 핫 다시 로드를 사용할 수 있습니다.

자세한 내용은 위의 링크를 참조하세요.

IntelliCode

  • 전체 줄 완성은 현재 컨텍스트를 기준으로 하는 다음 C# 코드 청크를 예측하고 커서 오른쪽에 인라인 제안으로 표시합니다.
  • 이제 전체 줄 완성JetBrains ReSharper의 최신 빌드와 호환됩니다. ReSharpers 사용자 지정 완성 목록 항목 선택에 따라 줄 완성 컨텍스트를 업데이트하는 것은 지원되지 않습니다. 필요한 경우 ReSharper 사용자는 여기에 설명된 대로 Visual Studio 네이티브 IntelliSense를 대신 사용하도록 선택할 수 있습니다.

JavaScript/TypeScript

  • 추가 도구를 사용하여 독립 실행형 JavaScript/TypeScript 프로젝트를 빌드하는 새 JavaScript/TypeScript 프로젝트 형식을 출시했습니다. 컴퓨터에 설치된 프레임워크 버전을 사용하여 Visual Studio에서 Angular 및 React 프로젝트를 만들 수 있습니다.
  • 이제 Visual Studio 테스트 탐색기에서 JavaScript 및 TypeScript 테스트를 사용할 수 있습니다.
  • NPM GUI를 사용할 수 있으므로 이제 Nuget 패키지를 다운로드하는 것과 동일한 방식으로 NPM 모듈을 다운로드할 수 있습니다.

.NET 6 SDK

  • .NET 6 SDK가 Visual Studio 2022에 포함됨

.NET 생산성

  • 매개 변수 리팩터링을 도입하면 메서드 구현에서 해당 호출자로 새 매개 변수를 이동할 수 있습니다.
  • 데이터 흐름 분석을 위한 값 원본 추적
  • 다시 할당된 변수에 밑줄을 표시하는 옵션
  • 재정의 생성 대화 상자에 검색 옵션 추가
  • XML <code> 태그에 대한 요약 정보에서 이제 공백과 CDATA 블록이 보존됩니다.
  • 이제 모든 참조 찾기 창에서 다중 대상 프로젝트를 그룹화합니다.
  • Visual Basic에서 반복 형식을 제거하는 리팩터링
  • 구현으로 이동은 더 이상 재정의된 추상 선언이 있는 멤버로 이동하지 않습니다.
  • 솔루션 탐색기에서 폴더 구조와 일치하도록 네임스페이스 동기화
  • 솔루션 탐색기에서 백그라운드 코드 분석 구성
  • 이제 새 .NET 프로젝트에 대해 nullable 참조 형식이 기본적으로 사용됨
  • C# 10.0 파일 범위 네임스페이스 리팩터링
  • 이제 디컴파일된 소스로 이동이 기본적으로 설정됨
  • 형식 검사보다 null 검사를 선호하는 리팩터링
  • 이제 메서드에서 명시적으로 예외를 throw할 때 XML 주석이 자동으로 <exception> 태그 생성
  • 이제 상속 여백이 기본적으로 사용됨

프로그래밍 언어

  • C#10

Razor(ASP.NET Core) 편집기

  • UI 고정을 줄이고 솔루션 시작 시 성능을 향상함
  • 일부 솔루션에서 의미 체계 색 지정이 2배 더 빨라짐
  • Razor 파일에서 F7(코드 보기) 지원
  • razor 파일에서 Tab 키를 두 번 누르는 대신 단일 Tab 키를 사용하여 코드 조각 세션을 완료하는 코드 조각 지원
  • 중첩된 HTML 및 Razor 구성 요소가 있는 경우 @code 블록의 서식 향상
  • Razor 파일에서 핫 다시 로드 지원
  • 성능 개선 사항
  • 서식 지정 및 들여쓰기 기능 향상
  • 새 Razor 편집기 색
  • TagHelpers는 현재 색이 지정되었으며 요약 정보 분류 지원 및 완료 도구 설명이 제공됩니다.
  • Razor 구성을 위한 각도 중괄호 강조 표시 및 탐색
  • 이제 주석에서 자동 완성, 스마트 들여쓰기, 주석 처리 연속 자동 포함 및 블록 주석 탐색을 사용할 수 있습니다.

원격 테스트

  • Linux 컨테이너, WSL 및 SSH 연결과 같은 원격 환경에서 테스트를 실행할 수 있도록 하는 아직 초기 실험 미리 보기입니다.

테스트 도구 지원

  • 테스트 탐색기에 표시
  • 17.0부터 새 버전의 테스트 플랫폼은 제네릭 테스트 및 순서가 지정된 테스트를 실행할 수 없습니다. 이러한 특정 기능은 MSTestv1 초기 버전의 일부로만 제공되며 MSTestv2에 포함되지 않습니다. 이러한 기능과 순서가 지정된 테스트를 매우 적게 사용하는 것은 이제 모범 테스트 사례와 반대되는 것으로 간주됩니다.
  • 새 TestSettings 파일 및 TestSettings 편집기 만들기를 포함하여 일부 테스트 환경은 17.0에서 사용할 수 없습니다. 테스트 실행은 여전히 TestSettings 파일을 사용할 수 있지만 TestSettings가 RunSettings로 바뀌었으며 사용자는 향상된 성능 및 기능을 마이그레이션하는 것이 좋습니다. 자세히 알아보세요.
  • 웹 부하 테스트 및 코딩된 UI 테스트 지원 업데이트 코딩된 UI 테스트 및 [웹 부하 테스트](클라우드 기반 부하 테스트 서비스 수명 종료 | Azure DevOps 블로그(microsoft.com)는 2019년에 공식적으로 사용 중단되었습니다. 사용자에 미치는 영향을 최소화하기 위해 Visual Studio 2022에는 이러한 기능에 대한 최소 지원이 제공됩니다. 사용자는 코딩된 UI 테스트 및 웹 부하 테스트를 중단하는 것이 좋습니다.

UWP 확장 SDK에 대한 도구 상자 채우기

  • UWP 확장 SDK는 이제 SdkManifest.xml 파일에 나열하여 도구 상자에 표시할 형식을 명시적으로 선언해야 합니다. 이전 버전의 Visual Studio 동작은 변경되지 않습니다. 매니페스트의 컨트롤 목록을 무시하고 대신 SDK 어셈블리의 컨트롤 형식을 동적으로 열거합니다.

신뢰할 수 있는 위치

  • "신뢰 설정" 기능을 개선했으며 이제는 신뢰할 수 없는 코드(예: 파일, 프로젝트 또는 폴더)를 IDE 내에서 열 때마다 경고를 표시할 수 있습니다.
  • 이제 신뢰 검사가 솔루션 폴더 수준에서 수행됨
  • 사용자가 만든 프로젝트가 신뢰할 수 있는 목록에 자동으로 추가됨
  • 사용자는 Visual Studio에서 만든 임시 위치에 대한 신뢰 검사를 건너뛸 수 있음

업데이트, LTSC 및 배포

  • Visual Studio 2022를 사용할 경우 가을과 봄에 출시될 서비스 기준선이 여러 개 동시에 지원될 예정입니다. 자세한 내용은 Visual Studio 릴리스 주기 설명서Visual Studio 2022 제품 수명 주기를 참조하세요.
  • 이제 Visual Studio 2022와 함께 제공되는 새 설치 관리자에서 Visual Studio 제품이 업데이트를 받을 위치를 구성할 수 있습니다. 이렇게 하면 다른 LTSC에서 업데이트를 선택할 수 있으며, 관리형 엔터프라이즈 환경에 있는 경우에는 레이아웃에서 업데이트를 받도록 클라이언트를 구성할 수 있습니다. 업데이트에 대한 소스를 구성하는 기능은 Visual Studio 설치 관리자에 함께 제공되는 새로운 기능입니다. 따라서 이 동작은 Visual Studio 2019와 같은 하위 수준 Visual Studio 버전에도 적용할 수 있습니다. 업데이트 채널을 구성하는 방법에 대한 자세한 내용은 Visual Studio 업데이트 설명서를 참조하세요. 네트워크 레이아웃에 대해 이 작업을 수행하려면 Visual Studio 관리자 가이드를 참조하세요.
  • 이제 IT 관리자는 Visual Studio를 설치하지 않고도 문제를 보고할 수 있습니다.

사용자 인터페이스

  • 기본 아이콘이 업데이트 및 새로 고침되었습니다.

웹 도구

  • 이제 게시 요약 페이지에서 ‘호스팅’ 섹션의 오른쪽 위 모서리에 있는 ‘...’ 메뉴 아래에 원격 디버깅 및 프로파일링을 시작/중지하는 작업이 있습니다.
  • 이제 연결된 서비스 페이지에 Storage Explorer를 시작하는 작업이 있습니다.
  • .NET 6과 함께 제공되는 “ASP.NET Core 비어 있음” 템플릿은 Microsoft의 지원이 추가되기 시작한 새로운 ‘최소 API’ 패러다임을 사용하고 있습니다.
  • Azurite는 더 이상 적극적으로 개발되지 않는 이전 Azure Storage Emulator 대신 Azure Storage의 로컬 에뮬레이션에 사용됩니다.
  • Visual Studio의 연결된 서비스 환경을 통해 Microsoft ID 플랫폼을 사용하여 ASP.NET Core 애플리케이션에 인증을 추가할 수 있습니다.

.NET Framework용 WPF XAML 디자이너

  • .NET Framework용 현재 WPF XAML 디자이너는 .NET(.NET Core)용 WPF XAML 디자이너에 사용되는 것과 동일한 아키텍처를 기반으로 .NET Framework용 새 WPF XAML 디자이너로 바뀝니다. Visual Studio 환경은 동일하게 보이지만 .design.dllMicrosoft.Windows.Design.Extensibility 기반의 이전 모델이 사용 중단되므로 타사 제어 공급업체는 새로운 확장성 모델을 지원해야 합니다. .NET(.NET Core)용 .designtools.dll 확장을 이미 만든 경우 해당 확장은 .NET Framework용 새 WPF XAML 디자이너에 작동합니다. 새 확장성 모델로 마이그레이션하는 방법에 대한 자세한 내용은 아래의 마이그레이션 문서를 참조하세요.

XAML 핫 다시 로드

  • XAML 핫 다시 로드 변경 - 앱 내 도구 모음 및 설정의 사소한 변경

XAML Live Preview

  • WPF, UWP, WinUI 및 Xamarin.Forms 개발자는 이제 XAML Live Preview에서 앱을 Android Emulator에서 또는 UWP 데스크톱 앱으로 실행할 수 있습니다. 라이브 미리 보기는 실행 중인 애플리케이션 사용자 인터페이스를 캡처하여 Visual Studio 내의 도킹된 창으로 가져옵니다. 이렇게 하면 라이브 XAML 코드를 변경하는 동안 실행 중인 앱과 Visual Studio 간에 앞뒤로 이동할 필요 없이 XAML 핫 다시 로드 사용하여 Visual Studio 자체 내에서 해당 변경 내용을 확인하면서 앱을 쉽게 변경할 수 있습니다.

자세한 내용을 보려면 위의 링크를 클릭하세요.

XAML 샘플 데이터

  • 이제 WPF 애플리케이션의 도구 상자에서 DataGrid, ListBox, ListView 컨트롤을 만들 때 디자인 타임 샘플 데이터가 기본적으로 추가됩니다. 이 동작을 사용하지 않도록 설정하려면 도구 -> 옵션 -> XAML 디자이너에서 ‘Automatically add sample data on element creation’(요소 생성 시 자동으로 샘플 데이터 추가)을 선택 취소합니다.
  • 샘플 데이터에 대한 자세한 내용은 샘플 데이터 설명서를 참조하세요.

향상된 XAML 바인딩 환경

  • 속성 검사기에서 데이터 바인딩 대화 상자에 빠르게 액세스, 빠른 작업에서 바인딩을 설정하는 기능, 데이터 바인딩 대화 상자 내에서 바인딩할 속성을 선택하는 기능 등 데이터 바인딩을 빠르고 쉽게 수행할 수 있도록 여러 가지 기능이 개선되었습니다.

자세한 내용을 보려면 위의 링크를 클릭하세요.

알려진 문제

.NET을 사용한 모바일 개발

Python 도구

C++ IntelliSense

Visual Studio 2022 버전 17.0.0 릴리스의 새로운 기능 세부 정보

디버깅 및 진단

  • 프로세스에 연결 대화 상자 개선
  • 창 아래쪽의 토글을 통해 새 부모/자식 프로세스 목록 보기
    • 보기 선택은 지속되어야 합니다.
    • 키보드의 왼쪽 키를 누르면 부모/자식 보기에서 부모 프로세스로 이동합니다.
    • 모든 열은 원래 보기처럼 정렬할 수 있어야 합니다.
  • 새 명령줄 열은 두 보기에서 모두 사용할 수 있습니다.
  • 앱 풀 이름은 w3wp 프로세스의 “제목 열”에 표시됨

![프로세스에 연결](media/17.0/17.0_P2_attach_to _process_3.png)

  • catch 블록에 예외 도우미가 추가되었습니다. 그러면 관리형되는 단계에서 예외가 throw되고 단계가 catch 블록에서 완료될 때 관련 예외 정보가 있는 예외 도우미가 표시됩니다.
  • 새 '계속' 단추: 'caught' 예외에 대한 예외 도우미를 표시합니다.

예외 처리기 업데이트

  • 선택한 커서 위치에 도달할 때까지 그 사이의 모든 중단점을 무시하고 디버거를 실행하는 [강제 실행 클릭] 옵션을 추가했습니다.
  • 원하는 코드 줄의 오른쪽 클릭 메뉴에서 "강제 실행 클릭"을 클릭하여 실행할 수 있습니다.

커서로 강제 실행

  • 애플리케이션이 디버깅 모드인 경우 SHIFT 키를 누른 상태에서 마우스를 가리킨 경우 코드 줄 옆에 나타나는 녹색 문자 모양을 클릭하여 "강제 실행 클릭"을 실행할 수도 있습니다.

커서 문자 모양으로 강제 실행

  • 메모리 덤프 진단 분석
    • ASP.NET Core 메모리 덤프에서 더 많은 비동기 동기화 문제를 찾기 위해 분석기 엔진을 개선했습니다.
    • CPU 시간별로 상위 5개 스레드를 검토하여 코드에서 가장 많은 CPU 리소스를 사용하는 부분을 찾습니다.
    • 관리되는 전체 힙에서 0세대, 1세대, 2세대 및 큰 개체 힙의 메모리 부족 징후에 대해 검토합니다.
    • 크래시 덤프가 있는 경우 애플리케이션의 크래시 원인이 된 두 번째 예외 및 스레드를 찾을 수 있습니다.
    • 진단 가설을 형성하는 데 어려움을 겪고 있나요? 크래시 또는 중단의 정확한 원인을 잘 알 수 없는 경우 예외 분석기를 사용하여 힙의 모든 예외를 신속하게 찾아 검토할 수 있습니다.
    • 메모리 분석이 중요한 시점을 위해 Finalizer 큐 분석기의 추론을 개선했습니다. 이제 코드에 집중하여 .NET Framework에서 관리되는 개체를 제외합니다.

종속 중단점

다른 중단점이 처음 적중된 경우에만 중단점을 사용하도록 구성할 수 있는 새로운 중단점입니다. 디버깅할 때 Visual Studio 디버거는 필수 조건 중단점에 도달한 경우에만 종속 중단점에서 애플리케이션을 일시 중지합니다. 설정 창에서 "후속 중단점이 적중된 경우에만 사용" 확인란을 사용하도록 설정하고 종속 중단점을 구성할 드롭다운에서 필수 조건 중단점을 선택하여 중단점을 종속 중단점으로 변환할 수 있습니다.

종속 중단점

중단점 여백 향상

사용자가 중단점을 설정할 수 있는 위치를 나타내는 새로운 중단점 문자 모양을 추가했습니다.

중단점 문자 모양

해당 중단점 문자 모양을 마우스 오른쪽 단추로 클릭하면 옵션이 포함된 새로운 상황에 맞는 메뉴가 제공됩니다. 이러한 옵션은 더 적은 클릭으로 고급 중단점(조건부 중단점, 추적점 및 임시 중단점)을 신속하게 만들 수 있는 방법을 제공합니다.

중단점 상황에 맞는 메뉴

임시 중단점

사용자가 코드를 한 번만 중단할 수 있는 새로운 중단점입니다. 디버깅할 때 Visual Studio 디버거는 이 중단점에 대해 애플리케이션 런타임을 한 번만 일시 중지하고 적중되면 바로 제거합니다. 설정 창에서 “Remove breakpoint once hit”(적중되면 중단점 제거) 확인란을 사용하도록 설정하면 모든 중단점을 임시 중단점으로 변환할 수 있습니다. 또는 중단점 여백에서 새 오른쪽 클릭 상황에 맞는 메뉴를 사용하여 이 중단점을 설정할 수 있습니다.

임시 중단점

중단점 끌어서 놓기

중단점에 대한 끌어서 놓기 제스처를 추가했습니다. 이제 중단점을 길게 눌렀다가 원하는 코드 줄에 놓아 중단점을 한 위치에서 다른 위치로 이동할 수 있습니다. 이 기능은 작업/조건 변수가 컨텍스트 내에 있는 한 고급 중단점에서 작동합니다.

중단점 끌어서 놓기

솔루션 탐색기의 외부 소스 노드

솔루션 탐색기에 새 “외부 소스” 노드를 추가했습니다. 이 노드는 현재 디버깅 중에만 나타나며 소스 서버 또는 소스 링크 정보를 포함하는 기호가 로드된 관리형 모듈의 소스를 표시합니다. 디버깅 중에는 소스 서버 정보가 있는 로드된 관리형 기호 파일(.pdb)이 해당 노드 아래에 표시됩니다. 다른 솔루션 탐색기 폴더와 같은 파일을 찾아보거나 항목을 두 번 클릭하여 소스 서버에서 파일을 다운로드하고 VS 편집기에서 열 수 있습니다. 솔루션 탐색기의 외부 소스 노드

프로세스에 연결 대화 상자 개선

프로세스에 연결 대화 상자에 새로운 자동 새로 고침 확인란을 추가했습니다. 이 확인란을 선택하면 사용 가능한 프로세스로 프로세스 목록이 자동으로 새로 고쳐집니다. 프로세스에 연결 대화 상자의 새로운 “Select any window from desktop”(바탕 화면에서 창 선택) 옵션을 사용하여 사용자는 바탕 화면에서 실행 중인 창을 선택하고 관련 프로세스에 연결하여 디버깅할 수 있습니다.

프로세스에 연결 대화 상자 개선

메모리 덤프 진단 분석

스택 오버플로 예외가 발생할 경우 루트 호출 프레임을 찾는 것은 어렵고 시간이 오래 걸릴 수 있습니다. 최신 분석기는 편리한 호출 스택 보기를 제공하고 반복적인 노이즈 프레임을 제거하여 보다 빠르게 문제를 분석할 수 있습니다.

개인 설정

VS Code 테마를 Visual Studio 테마로 변환

Visual Studio에서 작동하도록 VS Code 테마를 변환할 수 있는 테마 변환기 도구를 만들었습니다. 여기서 사용해 보세요.

새 Visual Studio 테마 팩

이제 기본 VS Code 테마를 Visual Studio 테마 팩으로 사용할 수 있습니다. 여기에서 테마 팩을 살펴보세요.

Windows OS에 테마 동기화

사용 가능한 주변 광원에 따라 테마를 조정할 수 있도록 Visual Studio 테마를 Windows 테마와 동기화하는 기능을 추가했습니다. 이 기능을 사용하도록 설정하려면 도구 > 테마 > 시스템 설정 사용으로 이동합니다.

탭 색 지정

색 탭을 사용하도록 설정하려면 도구 > 옵션 > 탭 및 창으로 이동하고 탭 색 지정을 사용하도록 설정합니다.

탭 색 지정

편집기

부분 단어 탐색

이제 Ctrl+Alt+왼쪽 화살표Ctrl+Alt+오른쪽 화살표를 통해 부분 단어로 탐색할 수 있습니다. 예를 들어 문자열 “HelloWorld”에서는 “Hello” 및 “World”가 부분 단어로 식별됩니다. 도구 > 옵션 > 텍스트 편집기 > 일반에서 부분 단어 탐색을 사용하도록 설정하면 단어 관련 명령(예: TransposeWord)이 부분 단어와 상호 작용합니다.

자동 저장

이제 도구 > 옵션 > 환경 > 미리 보기 기능에서 자동 저장을 사용할 수 있습니다. 사용하도록 설정된 경우 Visual Studio 애플리케이션이 포커스를 잃으면(예: 다른 창에 포커스가 있는 경우) 가능한 경우 모든 더티 문서가 디스크에 저장됩니다. 저장할 수 없는 파일은 사용자가 저장 또는 다른 이름으로 저장... 명령을 통해 명시적으로 저장할 때까지 더티로 유지됩니다.

다중 캐럿 복사\붙여넣기 환경

다중 캐럿 복사 및 붙여넣기 환경이 향상되었습니다. 이전에는 여러 줄을 여러 캐럿에 붙여넣으면 각 캐럿에서 전체 클립보드가 중복되었습니다. 이제 여러 줄을 동일한 개수의 캐럿에 붙여넣으면 각 줄이 각 캐럿에 삽입됩니다. 다중 캐리트를 사용하려면 Alt+Shift+마우스 클릭 또는 Alt+Shift+를 누르고 Ctrl+Shift+화살표 키를 사용하여 선택 영역을 확장합니다. 그런 다음, Ctrl+C를 눌러 여러 선택 영역의 텍스트를 복사합니다. Alt+Shift+‘마우스 클릭’을 사용하여 원하는 위치에 붙여넣으려는 각 줄에 대해 여러 캐럿을 만듭니다. 마지막으로, Ctrl+V를 눌러 고유한 각 캐럿에 각 줄을 붙여넣습니다.

다중 캐럿 복사 및 붙여넣기

또한 Alt+Shift+‘위쪽 또는 아래쪽 화살표 키’ 또는 Alt+Shift+‘마우스 끌기’를 사용하여 여러 캐럿을 선택할 수 있습니다. 이전에는 이러한 제스처가 상자 선택을 만들었습니다. 지금은 상자 선택이 여러 캐럿으로 변환됩니다. 이 방법은 정확한 위치를 클릭하여 개별 캐럿을 삽입하는 방법보다 더 쉽고 빠릅니다. 다중 캐리트 선택을 확장할 때 Alt+Shift+화살표 키Alt+Shift+마우스 끌기를 사용하여 상자 선택을 계속 사용하려면 [도구 > 옵션 > 텍스트 편집기>] 고급으로 이동하여 [상자 사용] 선택을 선택합니다.

다중 캐럿 상자 선택 옵션

확장성

Microsoft.VisualStudio.LanguageServer.Client는 언어 클라이언트에서 초기화하지 못하는 경우 알림을 사용자 지정하는 새로운 방법을 도입하고 있습니다.

이제 초기화 작업이 TSC(작업 상태 센터)에서 추적됩니다. 초기화 작업이 실패하면 사용자가 TSC로 이동하여 발생한 문제에 대한 자세한 정보를 확인할 수 있습니다. 이제 언어 클라이언트에서 사용자에게 표시되는 메시지를 사용자 지정하여 이 오류가 나타내는 내용 및 오류를 해결하기 위해 수행할 수 있는 작업에 대한 정보를 제공할 수 있습니다. 이를 위해 ILanguageClient 인터페이스에 새 API 세트를 도입합니다. 이러한 새 API는 ILanguageClient 인터페이스에서 호환성이 손상되는 변경을 발생시키므로 언어 확장이 Visual Studio 2022에서 작동하려면 새 패키지를 참조해야 합니다.

다음은 새 API입니다.

  1. ShowNotificationOnInitializeFailed 속성 - 언어 서버에서 다음과 같은 오류에 대해 사용자에게 알리는 말풍선을 표시할지 여부를 결정하는 부울 속성입니다.

작업 상태 센터의 ShowNotificationOnInitializeFailed

오류로 인해 현재 작업 중인 프로젝트의 사용자 환경이 크게 영향을 받는 경우에만 이 속성을 true로 설정하는 것이 좋습니다.

  1. OnServerInitializedFailedAsync 메서드 - 이 메서드는 언어 클라이언트의 초기화가 실패하는 경우에 호출됩니다. LanguageClientInitializationInfoBase 개체에 오류가 발생한 방법에 대한 정보가 제공되므로 언어 클라이언트는 고유한 방식으로 사용자에게 오류를 알리거나 오류 컨텍스트와 함께 사용자 지정된 메시지를 제공할 수 있습니다. 메시지가 제공되면 Visual Studio의 출력 창에 표시됩니다.

출력 창의 언어 클라이언트 초기화 오류

JavaScript/TypeScript

이제 Visual Studio에서 독립 실행형 Angular, React 및 Vue 프로젝트를 만들 수 있는 새로운 JavaScript/TypeScript 프로젝트 형식이 지원됩니다. 로컬 머신에 설치한 프레임워크 CLI 도구를 사용하여 프로젝트를 만듭니다. 즉, 템플릿 버전은 로컬 머신에 있는 CLI 버전을 기반으로 합니다.

이러한 새 프로젝트 내에서 단위 테스트를 실행하고 ASP.NET Core API 프로젝트와 통합할 수 있습니다. 설명서는 여기에서 찾을 수 있습니다.

  • 추가 도구를 사용하여 독립 실행형 JavaScript/TypeScript 프로젝트를 빌드하는 새 JavaScript/TypeScript 프로젝트 형식을 출시했습니다. 자세한 내용은 여기를 참조하세요.
  • NPM GUI를 사용할 수 있으므로 이제 새 JavaScript/TypeScript 프로젝트에서 Nuget 패키지를 다운로드하는 것과 동일한 방식으로 NPM 모듈을 다운로드할 수 있습니다.

NPM GUINPM GUI2

.NET 및 C++ 개발자를 위한 핫 다시 로드 환경

올해 초에 최대한 많은 .NET 개발자에게 핫 다시 로드를 가져오는 흥미로운 프로젝트인 .NET 핫 다시 로드를 발표했습니다. 이 여정은 Visual Studio 2019년에 제공되는 첫 번째 미리 보기로 시작되었으며, 전체 환경이 제공될 Visual Studio 2022에는 더 많은 기능이 제공될 예정입니다. 오늘을 매우 기쁘게도 Visual Studio 2022 GA 릴리스에서 완성한 기능들을 여러분과 자세히 나누려고 합니다.

핫 다시 로드를 처음 접하는 분들을 위해 간단히 소개해 드리겠습니다. Visual Studio의 핫 다시 로드 환경이 관리형 .NET 앱과 네이티브 C++ 앱 모두에 대해 작동합니다. 작업 중인 앱 유형과 관계없이 핫 다시 로드의 목표는 가능한 한 편집 간에 앱 다시 시작을 수행하는 횟수를 줄여 앱이 다시 빌드되거나 다시 시작되거나 앱 자체에 있던 이전 위치로 다시 이동할 때까지 기다리는 일 등에 걸리는 시간을 줄여 생산성을 높이는 것입니다.

애플리케이션의 코드 파일을 편집하고 코드 변경 내용을 실행 중인 애플리케이션에 즉시 적용할 수 있도록 하여(“핫 다시 로드”라고도 함) 생산성을 높입니다. 변경 내용이 적용되면 앱 자체에서(또는 일종의 타이머 등을 통해) 작업을 수행하여 코드를 다시 실행하고 변경 내용을 즉시 확인합니다. 중단점을 통해 앱을 일시 중지할 필요가 없습니다!

이 기능의 일부 라이브 데모를 보려면 다음 비디오 중 하나를 확인하세요.

Visual Studio의 핫 다시 로드 사용자 환경

Visual Studio 2022의 .NET 및 C++ 개발자를 위한 핫 다시 로드 환경도 크게 개선되었습니다. 이제 도구 모음에서 “핫 다시 로드” 단추의 대상 구현을 개선된 모양과 더 많은 기능으로 구현했습니다.

가장 먼저 알 수 있는 것은 새 아이콘이 있는 새 드롭다운 스타일 단추입니다. 명령의 이름은 “코드 변경 내용 적용”(초기 미리 보기)에서 “핫 다시 로드”로 바뀌었습니다.

Visual Studio 2022의 핫 다시 로드 사용자 환경

단추를 확장하면 실행 중인 애플리케이션 다시 시작, 저장 시 핫 다시 로드에 대한 옵트인 토글, 새 설정 패널에 대한 빠른 액세스 등의 기능에 빠르게 액세스할 수 있습니다.

각 새로운 기능에 대한 자세한 내용은 다음과 같습니다.

  • 쉽게 애플리케이션 다시 시작: 이제 디버거를 사용하여 앱을 시작했는지 또는 디버거 없이 시작한지에 관계없이 다시 빌드를 통해 편집 작업을 적용해야 하는 경우 실행 중인 애플리케이션을 쉽게 다시 시작할 수 있습니다(.NET 6 앱에서 새로 지원됨).
  • 저장 시 핫 다시 로드: 이전 미리 보기 릴리스에서는 핫 다시 로드 단추를 명시적으로 클릭해야 하는 다른 모든 프로젝트에 대해 ASP.NET 프로젝트에서 저장 시 핫 다시 로드 변경 내용만 적용할 수 있었습니다. 최종 릴리스에서는 이제 모든 프로젝트 형식에 대해 저장 키를 사용하여 핫 다시 로드를 수행할 수 있습니다. 이 옵션은 옵트인(opt-in)이지만 사용하도록 설정하면 해제하지 않는 한, 모든 향후 Visual Studio 세션에 적용됩니다.
  • 간편한 설정 액세스: 핫 다시 로드가 사용/사용 안 함으로 설정될 때 더 많은 제어를 제공하기 위해 핫 다시 로드 옵션 패널도 추가했습니다. Visual Studio “옵션 > .NET / C++ 핫 다시 로드”에서 또는 설정을 클릭하여 핫 다시 로드 단추 드롭다운 메뉴를 통해 이러한 설정에 액세스할 수 있습니다.

디버거 없이 .NET 앱을 실행할 때 사용할 수 있는 향상된 편집 다시 실행 대화 상자도 추가되었습니다.

Visual Studio 2022의 핫 다시 로드에 대한 새로운 편집 다시 실행 대화 상자

이 새 대화 상자는 다음과 같이 여러 측면이 개선되었습니다.

  • 각 핫 다시 로드 편집 다시 실행 시 다시 빌드 및 변경 내용 적용에 대한 Visual Studio 세션 전체 옵트인 옵션 일단 선택되면 Visual Studio가 다시 시작될 때까지 모든 향후 편집 다시 실행에 적용됩니다.
  • 여러 수동 단계 대신, 클릭 한 번으로 수행할 수 있는 다시 빌드 및 코드 변경 내용 적용 명령
  • 설정에 쉽게 액세스할 수 있습니다.

또한 이전에 가능했던 것처럼 자동화된 작업을 수행하지 않으려는 경우에도 이 대화 상자를 사용하여 편집을 계속할 수 있습니다.

알려진 제한 사항 중 하나는 디버거를 사용할 때 GA 릴리스에서 이 새 대화 상자를 사용할 수 없지만 향후 업데이트에서는 이 시나리오에서 사용할 수 있도록 지원될 예정입니다.

C++ 앱 지원

Visual Studio 2022를 사용하고 디버거를 사용하여 앱을 시작하는 경우 디버거(F5)에서 실행할 때 ‘핫 다시 로드’ 단추를 사용하여 네이티브 C++ 애플리케이션을 핫 다시 로드할 수 있습니다. 핫 다시 로드는 CMake 및 OpenFolder 프로젝트를 사용하여 빌드된 앱에도 지원됩니다.

이 환경은 네이티브 편집하며 계속하기에서 제공됩니다. 지원되는 편집은 설명서를 참조하세요.

지원되는 .NET 앱 프레임워크 및 시나리오

2021년 5월에 핫 다시 로드를 발표한 이후에 .NET 개발자들이 제시하는 매우 일반적인 질문은 “핫 다시 로드가 내 .NET 앱 프레임워크/버전 조합에서 작동하나요?”였습니다. 대부분의 상황에서 ‘예’라고 답변할 수 있을 정도로 상당한 발전이 진행되었습니다. 주요 내용은 다음과 같습니다.

  • Visual Studio 2022를 사용하고 디버거로 앱을 시작하는 경우 기본 핫 다시 로드 환경은 대부분의 .NET 앱 및 프레임워크 버전 유형에서 작동합니다. 여기에는 .NET Framework, .NET Core 및 .NET 5 이상(해당하는 경우 C# 및 VB.NET 모두)이 포함됩니다. 지원되는 앱 유형에는 웹(코드 숨김 변경 내용), 데스크톱, 모바일, 클라우드, 기타 프로젝트 형식이 포함됩니다. 여기서 핵심 규칙은 디버거를 사용하는 경우 핫 다시 로드 사용할 수 있다고 가정하고 사용해 보라는 것입니다.
  • Visual Studio 2022를 사용하지만, 디버거를 사용하지 않는 경우(예: Ctrl+F5를 사용하여 앱을 시작하는 경우) 이제 대부분의 .NET 6 앱 유형을 대상으로 하는 경우에도 디버거 없이 핫 다시 로드를 사용할 수 있습니다. 즉, .NET 6(.NET 5 이하)을 대상으로 하지 않는 앱은 “디버거 없음” 시나리오를 지원하지 않으며 핫 다시 로드 지원을 사용하려면 디버거를 사용해야 합니다.
  • .NET 6 앱에서 Visual Studio 2022를 사용하는 경우 대부분의 시나리오 유형이 지원됩니다. 이는 위에서 언급한 새로운 “디버거 없음” 기능으로 제한되지 않습니다. 또한 Blazor 프로젝트 핫 다시 로드 지원과 더 일반적으로는 모든 ASP.NET Core 앱에서 Razor 파일 편집, CSS 핫 다시 로드 등의 다른 새로운 기능도 포함됩니다. Visual Studio 2022와 .NET 6을 대상으로 하는 앱을 함께 사용하면 가장 강력한 핫 다시 로드 환경을 사용할 수 있으며, 체험해 볼 수 있기를 바랍니다.

아래에서는 위의 요약을 확장하여 자세한 내용을 살펴보겠습니다.

디버거를 사용하는 경우 .NET 앱과 Visual Studio 2022

Visual Studio 2022를 사용하고 디버거를 사용하여 앱을 시작하는 경우 핫 다시 로드는 콘솔, WinForms(Windows Forms), WPF, UWP, WinUI 3* 등 대부분 앱 프레임워크와 ASP.NET MVC, Web API, 이전 Web Forms 프로젝트 등 대부분 ASP.NET 웹 프로젝트 형식(코드 숨김 편집용)에서 작동합니다. 이 목록은 예제일 뿐입니다. 실제 답변은 .NET이 있고 Visual Studio 관리형 디버거를 사용하는 모든 경우에 기본 핫 다시 로드 지원을 사용할 수 있다는 것입니다.

즉, Azure Functions와 같은 프로젝트도 이 시나리오에서 잘 작동합니다. 원하는 방식대로 조합해서 사용해 보고 문제가 발견되면 알려주세요.

*WinUI 3은 기본적으로 핫 다시 로드를 지원하지 않는 혼합 모드 디버깅을 사용합니다. 관리형 디버거를 사용하도록 설정하여 프로젝트 설정에서 이를 수정할 수 있습니다. 관리형 디버거를 사용하도록 설정하면 핫 다시 로드가 제대로 작동합니다.

.NET 앱과 Visual Studio 2022는 사용하지만 디버거를 사용하지 않는 경우

이제 핫 다시 로드는 콘솔, WPF, WinForms(Windows Forms), ASP.NET Core MVC, Web API, Blazor 등의 프로젝트 형식을 비롯한 대부분 .NET 6 앱 유형을 대상으로 할 때 디버거 없이 사용할 수 있습니다. 일부 개발자의 경우 디버거 없이 앱을 시작하는 타당한 이유가 있거나 이러한 방식을 선호하는 경향이 있으므로 이 추가 기능이 시작 시간에 거의 또는 전혀 영향을 주지 않으면서 유용하게 사용되기 바랍니다.

이 기능은 NET 6+에서만 사용할 수 있으며 .NET 6(.NET 5 이하)을 대상으로 하지 않는 앱은 “디버거 없음” 시나리오를 지원하지 않고, 핫 다시 로드 기능에 액세스하려면 디버거를 사용해야 합니다.

또한 첫 번째 릴리스의 “디버거 없음” 시나리오에서 모든 프로젝트 형식이 지원되는 것은 아닙니다. 특별한 사항

  • UWP 앱은 디버거 없는 핫 다시 로드가 지원되지 않습니다. 이것은 의도적인 것이며 현재, 이를 개선할 계획은 없습니다.
  • iOS 및 Android를 대상으로 하는 Xamarin.Forms 앱은 디버거를 사용하여 앱을 시작하든 또는 디버거를 사용하지 않고 앱을 시작하든 관계없이 .NET 핫 다시 로드를 지원하지 않지만, XAML 핫 다시 로드는 계속 지원합니다.
  • 가까운 미래에 .NET MAUI 앱이 디버거 없음 시나리오를 지원할 예정은 없지만 디버거를 통한 .NET 핫 다시 로드는 지원할 것입니다.

.NET 6 앱에서 Visual Studio 2022를 사용하는 경우 대부분 시나리오가 지원됨

Visual Studio 2022를 사용하고 .NET 6을 대상으로 하는 앱에서 작업할 수 있는 개발자는 가장 유용하고 강력한 핫 다시 로드 환경의 이점을 얻을 수 있습니다.

지원되는 주요 사항:

  • Blazor 앱(Server 및 WebAssembly*)
  • Blazor 및 일반 ASP.NET Core 웹 사이트에서의 Razor 파일 편집
  • CSS 핫 다시 로드
  • 디버거를 사용하지 않고 앱을 실행할 때 핫 다시 로드를 지원하는 기능(위에서 자세히 설명했음)

.NET 6을 대상으로 하는 개발자는 향후 Visual Studio 2022 업데이트 및 .NET 기능 밴드와 주요 릴리스에서 계속 개선될 예정입니다. 이제 시작하겠습니다.

*Visual Studio 2022 GA 릴리스에서는 Visual Studio 디버거를 사용할 때 Blazor WebAssembly에 대한 핫 다시 로드 지원이 아직 사용하도록 설정되어 있지 않습니다. 디버거 없이 Visual Studio를 통해 앱을 시작하는 경우에도 핫 다시 로드 기능을 사용할 수 있으며 향후 Visual Studio 업데이트에서 이 문제를 해결하기 위해 노력하고 있습니다.

지원되는 ASP.NET Core 시나리오

기본 핫 다시 로드 환경은 이제 많은 ASP.NET 시나리오에서 광범위하게 지원됩니다. 가장 폭넓게 사용할 수 있는 기능은 대부분 웹 애플리케이션 유형의 코드 숨김과 기타 .NET 클래스 파일을 변경하는 기능입니다. 이 기능은 Visual Studio 디버거를 사용하는 동안 작동하며, 이전에 편집하며 계속하기가 제공된 모든 위치에 있습니다.

.NET 6을 대상으로 하는 해당 ASP.NET Core 개발자의 경우 낮은 .NET 버전에는 사용할 수 없는 추가 기능이 있으며 이러한 기능은 다음과 같이 개선되었습니다.

  • CSHTML: Razor CSHTML 파일 편집은 이제 많은 유형의 편집 내용을 지원합니다.
  • 브라우저 새로 고침: 이제 razor 파일을 편집하면 디버깅할 때 웹 브라우저의 변경 내용이 자동으로 새로 고쳐집니다. 이전에는 디버거 없이 앱을 시작할 때만 사용할 수 있었습니다.
  • CSS 핫 다시 로드: 이제 앱이 실행되는 동안 CSS 파일을 변경할 수 있으며, 입력 시 변경 내용이 실행 중인 앱에 즉시 적용됩니다.
  • 디버거 없음: 이제 Visual Studio를 사용하여 디버거를 사용하지 않고 웹앱을 시작하는 경우(CTRL+F5) 핫 다시 로드 지원을 사용할 수 있습니다.

참고: Blazor WASM 앱에서 작업하고 Visual Studio 2022(17.0)를 사용하는 경우 Razor Pages의 핫 다시 로드는 디버거를 사용하지 않고 앱을 시작할 때만 작동합니다. 향후 업데이트에서 디버거 지원을 추가할 예정입니다.

지원되는 .NET 편집 내용

.NET 핫 다시 로드 환경은 편집하며 계속하기 메커니즘을 통해 지원되며, 원래 이전 버전에서 가능했던 것 이상의 추가 편집 유형을 지원하도록 개선되었습니다. 향상된 기능은 다음과 같습니다.

  • 사용자 지정 특성 추가, 업데이트 또는 삭제
  • 레코드 구조체 추가 또는 업데이트
  • #line 지시문 추가 또는 업데이트
  • Switch 식 편집
  • 지시문 자체에 대한 변경 내용을 포함하여 #line 지시문으로 파일 편집
  • 최상위 문 편집
  • 전역 using 지시문, 파일 범위 네임스페이스, 개선된 람다, 매개 변수가 없는 구조체 생성자 등의 새로운 C# 10 기능을 사용하는 코드 편집
  • 람다 매개 변수 이름 바꾸기
  • 기존 메서드의 매개 변수 이름 바꾸기

위의 개선 사항은 핫 다시 로드 환경과 편집하며 계속하기 환경 모두에서 사용할 수 있습니다.

추가 업데이트

  • 여러 프로세스에서 핫 다시 로드 및 편집하며 계속하기: 이제 여러 프로세스에 연결된 경우 핫 다시 로드 및 편집하며 계속하기 환경을 안정적으로 사용할 수 있습니다. 이전에는 이 기능이 완전히 지원되지 않았고 항상 제대로 작동하지는 않았으나 지금은 수정되었습니다.
  • 오류/경고 메시지 업데이트: EnC 및 핫 다시 로드에 적용되는 많은 오류/경고 메시지를 보다 명확하게 업데이트했습니다. 핫 다시 로드 작업 중에 편집하며 계속하기 용어가 사용되지 않도록 메시지를 보다 일반화하는 방식으로 이 작업을 수행했습니다.
  • .NET 앱의 빠른 유닛 테스트: 핫 다시 로드 기술은 이제 .NET 6을 대상으로 할 때 유닛 테스트 속도를 높이기 위한 실험적 기능으로 사용할 수 있습니다. 자세한 내용은 이러한 릴리스 정보의 테스트 섹션을 참조하세요.

지원되지 않는 .NET 시나리오

최종 릴리스에서도 다음과 같은 몇 가지 지원되지 않는 시나리오가 있습니다.

  • Xamarin.Forms 앱은 iOS 및 Android 시나리오에서 .NET 핫 다시 로드를 지원하지 않습니다. UWP 앱을 대상으로 지정할 때 몇 가지 핫 다시 로드 기능을 사용할 수 있습니다. 이 현상은 의도된 것이며, 추가 개선 사항이 예정되어 있지 않습니다. (참고: XAML 핫 다시 로드는 최신 SDK를 사용하는 Xamarin.Forms 고객에게는 계속 제공되고 지원됩니다.)
  • .NET MAUI 앱은 이 릴리스에서 지원되지 않습니다. .NET MAUI 및 핫 다시 로드를 사용하려면 Visual Studio 2022 업데이트 1 미리 보기 1 릴리스 정보에서 자세한 내용을 참조하세요.
  • F#을 사용하여 빌드되거나 .NET 네이티브를 대상으로 하는 앱은 핫 다시 로드를 지원하지 않습니다.

.NET 생산성

이제 동기화 네임스페이스 리팩터링을 솔루션 탐색기의 프로젝트 또는 폴더의 마우스 오른쪽 단추 클릭 메뉴에서 사용할 수 있어 폴더 구조와 일치하도록 네임스페이스를 쉽게 동기화할 수 있습니다.

솔루션 탐색기에서 네임스페이스 동기화

이제 백그라운드 코드 분석 구성을 솔루션 탐색기(마우스 오른쪽 단추 클릭) 메뉴에서 사용할 수 있습니다. 솔루션 탐색기에서 솔루션 노드를 마우스 오른쪽 단추로 클릭하고 분석 및 코드 정리를 선택합니다. 다음으로, 분석 범위 설정을 선택하여 백그라운드 코드 분석 범위를 구성합니다.

  • 이제 새 매개 변수를 추가하여 메서드 구현에서 호출자로 식을 이동하는 ‘매개 변수를 소개’하는 리팩터링이 있습니다. 식을 포함하는 줄에 커서를 놓거나 식을 강조 표시합니다. (Ctrl+.)을 눌러 빠른 작업 및 리팩터링 메뉴를 트리거합니다. {0}에 대한 매개 변수 지정 또는 {0}의 모든 항목에 대한 매개 변수 지정을 선택합니다. 두 옵션은 (1) 모든 호출 사이트에 업데이트된 식을 삽입하고, (2) 식을 반환하는 새 메서드를 추출하여 만들고 호출 사이트에 인수를 추가하거나 (3) 식이 포함된 메서드의 오버로드를 만들고 원래 메서드를 호출하는 세 가지 플라이아웃 옵션을 포함합니다.

빠른 작업 메뉴의 매개 변수 소개

  • 데이터 흐름 분석을 수행하여 특정 값이 지정된 지점에서 어떻게 전달되었는지와 전달될 수 있는 위치를 결정할 수 있는 값 원본 추적이라는 새 명령이 있습니다. 지정된 멤버를 마우스 오른쪽 단추로 클릭하고 오른쪽 클릭 메뉴에서 값 원본 추적을 선택합니다.

오른쪽 클릭 메뉴에서 값 소스 추적

  • 값 추적 창이 열려 결과를 분석할 수 있습니다.

값 소스 추적 창

  • 다시 할당된 변수에 밑줄을 표시하기 위한 옵션을 추가했습니다. 기본적으로 꺼져 있으므로 도구 > 옵션 > 텍스트 편집기 > C# 또는 Basic > 고급에서 사용하도록 설정하고 다시 할당된 변수에 밑줄 표시를 선택해야 합니다.

편집기에서 다시 할당된 변수에 밑줄 표시

  • 재정의 생성 대화 상자에 검색 옵션을 추가하여 재정의할 멤버를 빠르게 검색하고 선택할 수 있습니다.

재정의 생성 대화 상자에서 검색

  • XML <code> 태그에 대한 요약 정보에서 이제 공백과 CDATA 블록이 보존됩니다. 커서로 요소를 가리킵니다. 그런 다음, 요약 정보는 코드 위의 XML 주석에서 지원되는 스타일을 표시합니다.

XML에 대한 요약 정보에서 공백 유지

  • 이제 모든 참조 찾기 창에서 시각적 노이즈를 줄이는 데 도움이 되는 다중 대상 프로젝트를 그룹화합니다.

모든 참조 그룹 다중 대상 프로젝트 찾기

  • 이제 Visual Basic에서 반복 형식을 제거하는 리팩터링이 있습니다.
  • 구현으로 이동은 더 이상 재정의된 추상 선언이 있는 멤버로 이동하지 않습니다.

C# 언어 도구

C# 8.0에서는 null이 필요한지 여부를 선언할 수 있는 nullable 참조 형식을 도입했습니다. nullable 참조 형식을 사용하려면 <Nullable>enable</Nullable> 요소를 프로젝트 파일에 추가하거나 #nullable enable pragma를 프로젝트의 모든 소스 파일에 추가해야 합니다. 이 프로세스를 간소화하기 위해 새 .NET 프로젝트에는 <Nullable>enable</Nullable>을 자동으로 포함합니다.

C# 10.0에서는 파일 범위 네임스페이스를 도입하여 네임스페이스 내에서 클래스 정의를 중첩하지 않는 옵션을 제공합니다. 이제 네임스페이스를 파일 범위 네임스페이스로 변환하는 리팩터링이 있습니다. 파일 범위 네임스페이스를 사용하려면 먼저 <LangVersion>preview</LangVersion> 요소를 프로젝트 파일에 추가해야 합니다. 다음으로, 네임스페이스에 커서를 놓습니다. (Ctrl+.)을 눌러 빠른 작업 및 리팩터링 메뉴를 트리거합니다. Convert to file-scoped namespace(파일 범위 네임스페이스로 변환)를 선택합니다.

파일 범위 네임스페이스 리팩터링

이제 값 형식에 적용될 때 is object보다 is not null을 선호하는 리팩터링이 있습니다. 이 새 리팩터링을 사용하려면 형식 검사에 커서를 놓습니다. (Ctrl+.)을 눌러 빠른 작업 및 리팩터링 메뉴를 트리거합니다. Prefer null check over type check(형식 검사보다 null 검사 선호)를 선택합니다.

디컴파일된 소스로 이동

이제 디컴파일된 소스로 이동이 기본적으로 설정되어 라이브러리 형식의 선언으로 이동할 수 있습니다. 디컴파일된 소스로 이동은 소스 코드의 라이브러리 기호 및 디컴파일된 소스에서 정의로 이동을 호출할 때 사용할 수 있습니다.

편집기 향상된 기능

이제 XML 주석이 <summary> 태그 내에 <exception> 태그를 자동으로 생성하여 메서드에서 명시적으로 예외를 throw할 때 설명을 추가할 수 있습니다.

Visual Studio 2019에서는 코드의 구현 및 재정의를 나타내는 여백에 아이콘을 추가하는 상속 여백을 릴리스했습니다. 상속 여백 아이콘을 클릭하면 선택하여 이동할 수 있는 상속 옵션이 표시됩니다. 이 릴리스에서는 상속 여백이 기본적으로 사용됩니다. 상속 여백을 사용하지 않도록 설정하려면 도구>옵션>텍스트 편집기>C# 또는 기본>고급으로 이동하여 Enable Inheritance Margin(상속 여백 사용)을 선택 취소합니다.

상속 여백

프로그래밍 언어

C# 10

  • 구조체(record struct Point(int X, int Y);, var newPoint = point with { X = 100 };)의 구조체with 식을 기록합니다.
  • 전역 using 지시문: global using 지시문은 프로그램의 여러 파일에서 동일한 using 지시문을 반복하지 않습니다.
  • 향상된 한정된 할당: 한정된 할당 및 Null 허용 여부 분석은 dictionary?.TryGetValue(key, out value) == true와 같은 일반적인 패턴을 더 잘 처리합니다.
  • 상수 보간된 문자열: 상수로 구성된 보간된 문자열 자체는 상수입니다.
  • 확장 속성 패턴: 속성 패턴을 사용하면 중첩 멤버(if (e is MethodCallExpression { Method.Name: "MethodName" }))에 액세스할 수 있습니다.
  • 봉인된 레코드 ToString: 레코드는 봉인된 ToString을 사용하여 기본 레코드를 상속할 수 있습니다.
  • 증분 원본 생성기: 원본 생성 파이프라인을 세분화하고 중간 결과를 캐싱하여 대규모 프로젝트에서 원본 생성 환경을 개선합니다.
  • 혼합 분해: 분해 할당 및 분해 선언을 함께 혼합할 수 있습니다((existingLocal, var declaredLocal) = expression).
  • 메서드 수준 AsyncMethodBuilder: async 메서드를 컴파일하는 데 사용되는 AsyncMethodBuilder를 로컬로 재정의할 수 있습니다.
  • #line 범위 지시문: Razor와 같은 소스 생성기는 대상 범위(#line (startLine, startChar) - (endLine, endChar) charOffset "fileName")를 지정하는 #line 지시문을 사용하여 선 매핑을 세밀하게 제어할 수 있습니다.
  • 람다 개선 사항: 특성 및 반환 형식은 람다에서 허용됩니다. 람다 및 메서드 그룹에는 기본 대리자 형식(var f = short () => 1;)이 있습니다.
  • 보간된 문자열 처리기: 보간된 문자열 처리기 형식을 사용하면 할당 및 호출에서 보간된 문자열의 서식을 효율적으로 지정할 수 있습니다.
  • 파일 범위 네임스페이스: 단일 네임스페이스가 있는 파일에는 추가 중괄호 또는 들여쓰기(namespace X.Y.Z;)가 필요하지 않습니다.
  • 매개 변수가 없는 구조체 생성자: 구조체 형식에 매개 변수가 없는 생성자 및 인스턴스 필드 이니셜라이저를 지원합니다.
  • CallerArgumentExpression: 이 특성을 사용하면 메서드에 전달된 식을 문자열로 캡처할 수 있습니다.

자세한 내용은 C# 언어 기능 상태주요 변경 내용을 참조하세요.

Razor(ASP.NET Core) 편집기

  • 이제 Razor 파일에 핫 다시 로드 지원이 있습니다.

Razor 파일에서 다시 로드 지원

  • Razor 편집기의 성능이 크게 향상되었습니다.

  • 서식 지정 및 들여쓰기 기능 향상을 통해 더 안정적이고 훨씬 더 빠르게 만들 수 있습니다.

  • 새 Razor 색을 추가했습니다. 도구 > 옵션 > 환경 > 글꼴 및 색에서 이러한 색을 사용자 지정할 수 있습니다.

  • 이제 TagHelpers의 색이 지정되고 요약 정보 및 IntelliSense 완성 도구 설명에서 분류 지원이 제공됩니다.

TagHelpers 분류 지원

  • Razor 구성에 대한 각도 분기 강조 표시 및 탐색이 향상되었습니다.

  • 이제 주석에서 자동 완성, 스마트 들여쓰기, 주석 처리 연속 자동 포함 및 블록 주석 탐색을 사용할 수 있습니다.

원격 테스트 초기 실험 미리 보기

Linux 컨테이너, WSL 및 SSH 연결과 같은 원격 환경에서 테스트를 실행할 수 있도록 하는 아직 초기 실험 미리 보기가 있습니다. 매우 중요한 기능이지만 사용자 의견을 수집하는 동안 이 기능은 아직 초기 실험 단계에 있으므로 양해해 주시기 바랍니다. Visual Studio에서 연결된 환경을 통신하고 관리하는 방법에 대한 많은 코너 시나리오가 있을 것으로 예상되므로 평소와 같이 원활하지 않을 수 있습니다. 이 실험 버전의 원격 테스트를 사용하기 위한 몇 가지 요구 사항은 다음과 같습니다.

  • 대상 환경에 필요한 종속성을 설치해야 합니다. 즉, .NET 3.1을 대상으로 하는 테스트를 Linux 컨테이너에서 실행하려면 Dockerfile을 통해 컨테이너에 .NET 3.1이 설치되어 있는지 확인해야 합니다. 언젠가는 테스트 종속성을 원활하게 확보할 수 있는 설치 환경을 만드는 것이 좋지만 지금은 환경 프로비저닝의 대부분을 사용자의 사양에 따라 맡기고 있습니다.
  • 출력 -> 테스트 창을 통해 원격 환경에 대한 연결 상태를 모니터링할 계획입니다. 예를 들어 컨테이너가 중지된 경우 출력 -> 테스트 창에 메시지가 나타닙니다. 일부 시나리오는 검색하지 못할 수 있으므로 연결이 끊어진 것처럼 보이는 경우에는 출력을 확인할 계획입니다. 특히 출력 창이 "Test"로 설정되어 있지 않으면 메시지가 즉시 표시되지 않을 수 있습니다. 연결이 끊어진 경우 최상의 알림 모델을 계속 실험하고 있으므로 피드백을 환영합니다! 연결이 끊어진 것으로 표시되면 테스트 탐색기에서 원격 테스트 환경 드롭다운을 사용하여 로컬 환경으로 연결을 다시 설정한 다음, 원격 환경을 다시 선택하여 연결을 다시 시작할 수 있습니다.
  • 실험 미리 보기의 범위는 현재 .NET 테스트로만 지정됩니다. C++ 원격 테스트 환경을 지원하는 것에 대한 관심을 알고 있으며, 앞으로도 이를 제공하고자 노력하겠습니다.

원격 테스트를 어떻게 사용해 볼 수 있나요?

  • 공식 문서는 실험 기간 후에 도착합니다. 지금은 테스트를 시작하는 데 필요한 항목은 다음과 같습니다.
  • 환경은 솔루션의 루트에서 testenvironments.json을 사용하여 지정됩니다. json 파일 구조는 다음 스키마를 따릅니다.
{
    "version": "1", // value must be 1
    "environments": [
        { "name": "<unique name>", ... },
        ...
    ]
}
  • 로컬 컨테이너 연결
    • 로컬에서 실행되는 컨테이너에 연결하려면 로컬 컴퓨터에 Docker Desktop이 있어야 합니다. 필요에 따라 성능을 향상시키기 위해 WSL2 통합을 사용하도록 설정합니다.
    • Dockerfile의 경우 솔루션의 루트에서 testEnvironments.json 환경을 지정할 수 있습니다.
          {
          "name": "<name>",
          "localRoot": "<path to local environment>", // optional
          "type": "docker",
          "dockerImage": "<docker image tag>",
          }
      
      예:
      {
      "version": "1",
      "environments": [
          {
          "name": "linux dotnet-core-sdk-3.1",
          "type": "docker",
          "dockerImage": "testenv"
          }
      ]
      }
      
    • 다음은 .NET 3.1을 대상으로 하는 테스트를 실행하는 Dockerfile의 예제입니다.
      FROM mcr.microsoft.com/dotnet/core/sdk:3.1
      
    • docker build -t <docker image name> -f <path to Dockerfile> . 명령을 사용하여 컨테이너를 빌드합니다(끝에 "." 포함).
  • 로컬 WSL2 연결
    • 로컬 컴퓨터에서 WSL2 통합을 사용하도록 설정해야 합니다.
    • 환경은 다음 스키마에 따라 솔루션의 루트에 testEnvironments.json 지정할 수 있습니다.
      {
      "version": "1",
      "environments": [
          {
          "name": "WSL-Ubuntu",
          "type": "wsl",
          "wslDistribution": "Ubuntu"
          }
      ]
      }
      
  • SSH 연결
    • 도구 > 옵션 > 교차 플랫폼 > 연결 관리자로 이동하여 SSH 연결을 추가하거나 제거합니다. "추가"를 선택하면 호스트 이름, 포트 및 필요한 자격 증명을 입력할 수 있습니다.
    • 환경은 다음을 사용하여 솔루션의 루트에 testEnvironments.json 지정할 수 있습니다.
      {
      "version": "1",
      "environments": [
          {
          "name": "ssh-remote",
          "type": "ssh",
          "remoteUri": "ssh://user@hostname:22"
          }
      ]
      }
      
  • 활성 환경은 테스트 탐색기 도구 모음의 드롭다운을 통해 선택됩니다. 현재 한 번에 하나의 테스트 환경만 활성화할 수 있습니다.

테스트 탐색기의 원격 테스트 환경 드롭다운

  • 환경을 선택하면 테스트가 검색되고 새 환경에서 실행됩니다.

테스트가 원격 환경에서 검색되고 실행됨

  • 이제 원격 환경 내에서 테스트를 실행하고 디버그할 수 있습니다.

    테스트 탐색기에서 원격 환경의 테스트 결과 보기

  • 테스트 탐색기에서 일부 누락된 환경 필수 구성 요소를 설치하라는 메시지를 표시하고 설치를 시도할 수 있지만, 궁극적으로 원격 환경의 프로비저닝은 사용자 사양에 따라 그대로 유지하고 있습니다.

테스트 탐색기의 핫 다시 로드[실험적]: 이제 백그라운드에서 핫 다시 로드 기술을 사용하여 테스트 환경을 가속화하는 새로운 실험적 기능을 시도할 수 있습니다. 즉, 전체 빌드가 여전히 필요한 첫 번째 테스트 실행 후 사소한 변경을 수행하고 테스트를 실행할 수 있으며 전체 빌드를 다시 수행하지 않고도 모든 업데이트가 반영됩니다. 시작 방법 및 자세한 주의 사항은 아래 세부 정보를 참조하세요.

Visual Studio의 테스트 탐색기에 대한 핫 다시 로드를 사용하면 사소한 편집 사이에 빌드하지 않고도 테스트를 실행할 수 있습니다.

  • 이 환경은 .NET 6을 대상으로 하는 프로젝트에서만 사용할 수 있으며 ‘도구 > 옵션 > 테스트’로 이동하여 옵트인해야 합니다.

도구 > 옵션 > 테스트에서 핫 다시 로드 옵션을 사용하도록 설정하는 Visual Studio의 스크린샷.

  • 이 옵션을 사용하도록 설정하면 편집기에 저장되지 않은 변경 내용이 있어도 테스트가 업데이트됩니다. 빌드하지 않으므로 디스크의 bin 폴더에 있는 이진 파일이 부실합니다. 즉, 디스크에 있는 항목과 Visual Studio의 테스트 결과 간에 불일치가 표시될 수 있습니다. 이러한 문제를 해결하려면 체크 인하기 전에 Ctrl+Shift+B를 사용하여 전체 빌드를 수행해야 합니다. 명시적 빌드는 핫 다시 로드 테스트 결과를 일반 전체 빌드 테스트 결과로 바꿉니다.

  • 핫 다시 로드에서 선택할 수 없는 특정 유형의 편집이 있으며, 이러한 경우 전체 빌드를 수행하는 이전 동작으로 다시 기본 설정됩니다. 또한 Visual Studio의 변경 내용만 추적되고 있으며, 대상 변경과 같이 편집기에서 명확하지 않은 변경인 경우에는 전체 빌드가 필요한 것으로 다시 기본 설정될 수 있습니다.

  • 특정 큰 변경(예: 1,000개 이상의 메서드 이름 바꾸기)은 단순히 다시 빌드하는 것보다 핫 다시 로드가 더 오래 걸릴 수 있습니다. 이러한 경우 핫 다시 로드를 기다리지 않고 전체 다시 빌드를 수행하라는 메시지가 출력됩니다.

  • 스택 추적은 테스트 탐색기의 핫 다시 로드에서 아직 사용할 수 없습니다. 스택 추적을 사용해야 하는 경우에는 전체 빌드를 수행하는 것이 좋습니다.

테스트 도구

  • 테스트 탐색기에 표시(Ctrl+E,S): 테스트 탐색기에 표시는 커서가 편집기의 테스트 메서드에 있는 위치에서 테스트 탐색기의 테스트 위치로 이동할 수 있는 기능입니다. 이렇게 하면 현재 작업 중인 문서가 솔루션 탐색기에서 강조 표시된 상태로 유지되는 활성 문서와 동기화라는 유사한 기능이 알려질 수 있습니다. 이 항목은 개발자 커뮤니티에서 가장 많이 투표한 항목 중 하나이므로 이 기능의 우선 순위를 지정하는 데 도움을 주신 모든 분들에게 감사드립니다! 테스트 탐색기에 표시는 편집기의 마우스 오른쪽 단추 클릭 메뉴, CodeLens 테스트 문자 및 솔루션 탐색기의 마우스 오른쪽 단추 클릭에서도 사용할 수 있습니다.

    마우스 오른쪽 단추 클릭 메뉴에서 테스트 탐색기에 표시CodeLens에서 테스트 탐색기에 표시

  • 웹 부하 테스트 및 코딩된 UI 테스트 지원 업데이트: 웹 부하 테스트 레코더는 Visual Studio 2022에서 사용할 수 있습니다. 코딩된 UI 테스트 레코더는 Visual Studio 2022에 포함되지 않습니다. Visual Studio 2022에서 코드를 작성하여 코딩된 UI 테스트를 실행하고 새 테스트를 만들 수 있지만, 레코더는 이식할 수 없는 32비트 종속성을 기반으로 합니다. 코딩된 UI 레코더를 사용하기 위해 Visual Studio 2019를 함께 설치할 수 있습니다. 참고로 웹 부하 테스트 및 코딩된 UI 테스트는 2019년에 더 이상 사용되지 않으며 사용자에게 미치는 영향을 최소화할 수 있을 때 제품에서 제거할 계획입니다. 웹 UI 테스트에 관심이 있는 사용자는 새로운 크로스 플랫폼 및 오픈 소스 웹 테스트 프레임워크인 Playwright를 채택할 것을 강력히 권장합니다. 모든 주요 브라우저를 지원하고 비동기 코드를 훨씬 더 잘 처리할 수 있는 것 외에도 Playwright에는 테스트 기록 기능이 기본 제공되어 있습니다.

신뢰할 수 있는 위치

  • “신뢰 설정” 개선의 일환으로 “웹 표시” 검사를 제거하고 이전에 신뢰할 수 없는 코드(예: 파일, 프로젝트 또는 폴더)를 열려고 할 때 표시되는 경고 대화 상자를 추가했습니다.
  • 이제 현재 폴더 또는 부모 폴더 위치에서 코드를 신뢰할 수 있습니다.
  • 사용자가 만든 프로젝트가 사용자의 신뢰할 수 있는 위치 목록에 자동으로 추가됩니다.
  • Visual Studio 기능에서 만든 임시 위치에 대한 신뢰 검사를 건너뛸 수 있습니다.

IDE 내에서 콘텐츠(예: 솔루션, 프로젝트, 파일 또는 폴더)를 열기 전에 폴더 위치가 이전에 신뢰되었는지를 확인합니다.

신뢰할 수 없는 코드가 검색되면 보안에 미치는 영향을 경고하고 일반 IDE 작업 전에 코드를 신뢰하도록 요청하는 경고 대화 상자가 표시됩니다.

참고: 이 기능은 현재 기본적으로 해제되어 있지만 옵션 > 신뢰 설정 > 콘텐츠를 열기 전에 신뢰 결정 필요를 통해 사용하도록 설정할 수 있습니다.

외부 원본 노드 업데이트

이제 솔루션 탐색기의 외부 원본 노드도 C++를 지원합니다. 또한 기호가 있는 모든 모듈이 아직 로드되지 않은 새 하위 노드를 추가했습니다.

솔루션 탐색기의 외부 소스 노드가 C++를 지원함

마우스 오른쪽 단추 클릭 상황에 맞는 메뉴를 사용하여 솔루션 탐색기에서 직접 기호를 로드하여 모듈이 외부 원본 노드에 표시되도록 할 수도 있습니다. 외부 원본 노드의 파일도 사전순으로 정렬됩니다.

외부 소스 메뉴

iconography 업데이트 및 새로 고침

  • Visual Studio 2022용 사용자 인터페이스를 새로 고치는 목표의 일환으로 일관성, 가독성 및 경험을 바탕으로 IDE 전체에서 새로 고쳐지고 업데이트된 아이콘을 찾을 수 있습니다.

어둡고 밝은 배경이 있는 새 아이콘 예제

XAML 핫 다시 로드

XAML 핫 다시 로드 설정 및 앱 내 도구 모음을 업데이트하여 설정 및 앱 내 환경이 .NET 핫 다시 로드가 아닌 XAML 핫 다시 로드와 관련이 있음을 명확하게 보여 주었습니다.

XAML 앱의 업데이트된 앱 내 도구 모음

또한 일반적인 옵션을 함께 더 잘 구성할 수 있도록 설정 창을 간소화했습니다.

업데이트된 XAML 설정 옵션 패널

XAML Live Preview

WPF, UWP, WinUI 및 Xamarin.Forms 개발자는 이제 XAML Live Preview에서 앱을 Android Emulator에서 또는 UWP 데스크톱 앱으로 실행할 수 있습니다. 라이브 미리 보기는 실행 중인 애플리케이션 사용자 인터페이스를 캡처하여 Visual Studio 내의 도킹된 창으로 가져옵니다. 이렇게 하면 라이브 XAML 코드를 변경하는 동안 실행 중인 앱과 Visual Studio 간에 앞뒤로 이동할 필요 없이 XAML 핫 다시 로드 사용하여 Visual Studio 자체 내에서 해당 변경 내용을 확인하면서 앱을 쉽게 변경할 수 있습니다.

XAML 데스크톱 앱 UI의 실시간 미리 보기

시작하기:

  • 디버거를 사용하여 지원되는 애플리케이션 시작
  • “XAML 라이브 미리 보기”를 입력하거나 앱 내 도구 모음 “XAML 라이브 미리 보기에 표시” 단추를 사용하여 빠른 검색을 통해 XAML 라이브 미리 보기를 켭니다.

환경이 시작되면 다음 기능을 사용할 수 있습니다.

  • 스크롤 및 확대/축소: 앱 UI를 캡처하는 창을 이동하거나 확대/축소할 수 있습니다. 이렇게 하면 전체 앱을 표시하거나 편집하려는 부분만 표시하도록 설정할 수 있습니다. 패닝 및 스크롤은 터치 패드(두 손가락 스크롤), 마우스 스크롤 휠 또는 CTRL + 클릭으로 콘텐츠를 끌어서 작동합니다.
  • 눈금자: 하나 이상의 가로/세로 눈금자를 추가하여 실행 중인 앱을 오버레이할 수 있습니다. 그런 다음, 마우스 또는 키보드를 사용하여 이러한 줄을 원하는 위치로 이동할 수 있습니다. 키보드를 사용하여 눈금자를 이동할 때 정확한 위치 지정을 위해 화살표 키를 사용하고, 빠른 위치 지정을 위해 Ctrl + 화살표 키를 사용합니다. 눈금자를 선택(클릭)하고 delete 키를 눌러 눈금자를 삭제할 수도 있습니다.
  • 요소 선택 및 정보 팁: 요소 선택을 통해 라이브 시각적 트리 또는 앱 내 도구 모음에서 사용하는 것과 동일한 기능을 사용하여 편집하려는 XAML 요소를 선택할 수 있습니다. 선택한 후에는 새 '정보 팁' 기능을 사용하도록 설정하여 글꼴, 색, 여백/패딩 정보 등과 같은 선택한 요소에 대한 추가 정보를 가져올 수도 있습니다. 요소 선택을 사용하는 경우 라이브 시각적 트리 도구 모음 단추 또는 디버그 > 옵션 > 핫 다시 로드 설정을 통해 선택한 항목 미리 보기를 활성화하여 소스 XAML로 이동하는 것이 좋습니다.
  • Windows 전환: 캡처되는 앱 창을 제어할 수 있습니다.

향상된 XAML 바인딩 환경

  • 속성 검사자의 데이터 바인딩 아이콘이 개선되었습니다. 이제 속성 옆의 “원통” 아이콘을 클릭하여 데이터 바인딩 대화 상자에 빠르게 액세스하고 ‘x’ 아이콘을 클릭하여 바인딩을 지울 수 있습니다.

속성 검사자의 바인딩 아이콘

  • XAML 디자이너에서 클릭 몇 번으로 바인딩을 만들 수 있도록 하는 바인딩 탭이 빠른 작업에 추가되었습니다.

빠른 작업의 바인딩 탭

  • 진행 중일 때 속성을 선택하기 위한 대상 속성 콤보 상자를 데이터 바인딩 대화 상자에 추가했습니다.

대상 속성 콤보 상자를 사용하여 데이터 바인딩 대화 상자를 업데이트함

Developer Community에서 선정된 주요 문제

이 릴리스의 개발자 커뮤니티 수정 사항 전체 목록을 참조하세요.


알려진 문제

아래 링크에 따라 Visual Studio 2022에서 알려진 미해결 문제 및 해결 방법을 모두 확인하세요.

피드백 및 제안

많은 의견 부탁드립니다! 설치 관리자 또는 Visual Studio IDE의 오른쪽 위 모서리에 있는 피드백 보내기 아이콘 또는 도움말 > 보내기 피드백을 사용하여 문제를 보고하거나 기능을피드백 아이콘 제안할 수 있습니다. 설명을 추가하거나 해결 방법을 찾을 수 있는 Visual Studio Developer Community를 사용하여 문제를 추적할 수 있습니다. 라이브 채팅 지원을 통해 무료 설치 도움말을 가져올 수도 있습니다.


Blogs

개발자 도구 블로그 사이트에서 사용 가능한 인사이트 및 권장 사항을 활용하여 모든 새 릴리스에 대한 최신 정보와 다양한 기능에 대한 심층적인 게시물을 확인하세요.


맨 위로 이동