2019LogoVisual Studio 2019 버전 16.8 릴리스 정보



개발자 커뮤니티 | 시스템 요구 사항 | 호환성 | 배포 가능 코드 | 릴리스 기록 | 사용 조건 | 블로그 Visual Studio Docs | 의 새로운 기능


참고 항목

이것은 최신 버전의 Visual Studio가 아닙니다. 최신 릴리스를 다운로드하려면 Visual Studio 사이트를 방문하세요.



Visual Studio 2019 버전 16.8의 새로운 기능

지원 기간

이 버전은 이제 지원되지 않습니다. Visual Studio 지원에 대한 자세한 내용은 Visual Studio 2019에 대한 지원 정책을 검토하세요.

최신 버전의 릴리스 정보를 참조하거나 Visual Studio 사이트를 방문하여 지원되는 최신 버전의 Visual Studio 2019를 다운로드합니다.

Visual Studio 2019 버전 16.8 릴리스

Visual Studio 2019 보관된 릴리스 정보

Visual Studio 2019 블로그

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


Visual Studio 2019 버전 16.8 미리 보기에서 사용된 모든 Developer Community 항목의 전체 목록 참조

Release Notes Icon Visual Studio 2019 버전 16.8.7

‘릴리스 날짜: 2021년 3월 9일’

Visual Studio 2019 버전 16.8.7 릴리스에서 해결된 문제

보안 권고 알림

CVE-2021-21300 Git for Visual Studio 원격 코드 실행 취약성

원격 코드 실행 취약성은 Visual Studio에서 악성 리포지토리를 복제하는 경우에 존재합니다.

CVE-2021-26701 .NET Core 원격 코드 실행 취약성

텍스트 인코딩이 수행되는 방식으로 인해 .NET 5 및 .NET Core에 원격 코드 실행 취약성이 존재합니다.


Release Notes Icon Visual Studio 2019 버전 16.8.6

‘릴리스 날짜: 2021년 2월 22일’

Visual Studio 2019 버전 16.8.6 릴리스에서 해결된 문제


Release Notes Icon Visual Studio 2019 버전 16.8.5

‘릴리스 날짜: 2021년 2월 9일’

보안 권고 알림

CVE-2021-1639 TypeScript 언어 서비스 원격 코드 실행 취약성

Visual Studio가 JavaScript 또는 TypeScript 코드 파일을 포함하는 악성 리포지토리를 로드하는 경우에 원격 코드 실행 취약성이 존재합니다.

CVE-2021-1721 .NET Core 서비스 거부 취약성

X509 인증서 체인을 작성하는 동안 HTTPS 웹 요청을 만드는 경우에 서비스 거부 취약성이 존재합니다.

CVE-2021-24112 .NET 5 및 .NET Core 원격 코드 실행 취약성

그래픽 인터페이스에 참조가 남아 있을 때 메타파일을 삭제하는 경우 원격 코드 실행 취약성이 존재합니다. 이 취약성은 macOS 또는 Linux에서 실행되는 시스템에만 존재합니다.

Visual Studio 2019 버전 16.8.5 릴리스에서 해결된 문제

  • ExtensionSDKs 아래에 설치된 x86 Microsoft.VCLibs Appx가 올바른 시그니처로 업데이트되는 문제를 해결했습니다.
  • C++ DesignTime 기능을 사용할 때의 메모리 누수 문제를 해결했습니다.
  • 기존 데이터베이스를 SSDT 프로젝트로 가져올 때 암호를 기억하지 못하는 경우 예외가 발생하는 문제를 해결했습니다.
  • 고객이 처음으로 폴더 또는 다른 호스팅 대상에 .NET Core 프로젝트를 게시할 때 게시 단추를 사용할 수 없는 문제를 해결했습니다.
  • 개발자가 게시 프로필 보기 페이지를 열 때 가끔 발생하는 중단 문제를 해결했습니다.
  • Xcode 12.4 지원을 추가했습니다.

Developer Community의 항목


Release Notes Icon Visual Studio 2019 버전 16.8.4

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

보안 권고 알림

CVE-2021-1651 / CVE-2021-1680 진단 허브 표준 수집기 서비스 권한 상승 취약성

권한 상승 취약성은 진단 허브 표준 수집기가 데이터 작업을 잘못 처리하는 경우에 존재합니다.

CVE-2020-26870 Visual Studio 설치 관리자 원격 코드 실행 취약성

원격 코드 실행 취약성은 Visual Studio 설치 관리자가 악성 markdown을 표시하려고 시도하는 경우에 존재합니다.

CVE-2021-1723 ASP.NET Core 및 Visual Studio 서비스 거부 취약성

서비스 거부 취약성은 Kestrel에서 HTTP/2 요청을 구문 분석하는 방식으로 존재합니다.

Visual Studio 2019 버전 16.8.4 릴리스에서 해결된 문제

  • IntelliCode가 Visual Studio Marketplace에서 이전 버전의 Visual Studio에 이미 설치된 경우 C# 관련 IntelliCode 구성 요소가 설치되지 않을 수 있는 문제가 해결되었습니다.
  • PackageReference 프로젝트에서 PackageReference 종속성이 있는 packages.config 프로젝트를 참조하는 경우 전이적 프로젝트 참조가 적용됩니다.
  • Xcode 12.3 지원이 추가되었습니다.
  • x86_64 watchOS 7.0+ 시뮬레이터 지원 수정
  • 함수에서 반환된 VARIANT 사용에 대한 가양성(C33001~C33005)을 수정했습니다.
  • 프로젝트 또는 솔루션을 닫는 동안 WinForms .NET Core 디자이너에서 발생하는 일시적인 VS 크래시를 수정했습니다.
  • 고정 데이터베이스 프로젝트: 솔루션 탐색기에서 열린 파일로 파일을 끌어다 놓으면 파일 시스템에서 파일이 삭제됩니다.
  • SQL 스키마 비교에서 업데이트를 클릭해도 변경 내용이 sqlproj 파일에 저장되지 않는 문제를 해결했습니다.
  • “테이블/열을 찾을 수 없음” 오류로 인해 빌드가 실패한 버그를 수정했습니다.
  • 팀 탐색기 -> 분기에서 “병합 후 커밋” 확인란을 수정했습니다.
  • 업데이트를 확인하는 동안 Visual Studio가 몇 초 동안 응답하지 않을 수 있는 오류를 해결했습니다.
  • 이제 DeploymentAppRecipe.exe 도구는 모든 현재 디렉터리에서의 실행을 지원합니다. 또한 이제 배포에 실패할 때마다 0이 아닌 반환 값을 반환하고 표준 오류 스트림에 오류 메시지를 출력합니다.

Developer Community



Release Notes Icon Visual Studio 2019 버전 16.8.3

릴리스 날짜: 2020년 12월 8일

보안 권고 알림

CVE-2020-17156 Visual Studio 원격 코드 실행 취약성

원격 코드 실행 취약성은 Visual Studio에서 악성 리포지토리를 복제하는 경우에 존재합니다.

Visual Studio 2019 버전 16.8.3 릴리스에서 해결된 문제

  • 중첩된 함수 템플릿이 부모 클래스 외부에서 정의되는 경우의 내부 컴파일러 오류가 수정되었습니다.
  • 비정적 데이터 멤버의 이니셜라이저에서 ‘this’가 사용되는 경우의 잘못된 오류 C2355가 수정되었습니다.
  • /analyze:ruleset 옵션을 /analyze:rulesetdirectory 및/또는 /analyze:projectdirectory 옵션과 사용하는 사용자 지정 규칙 집합에 대한 규칙 집합 로드 오류가 수정되었습니다.
  • WinForms .NET Core 디자이너를 사용하는 동안의 Visual Studio의 일시적인 충돌을 수정합니다.
  • Visual Studio v 16.8.3에 .NET 5.0.1 삽입
  • 일부 UI 컨텍스트가 활성화된 도구 창에서 Visual Studio의 작동 중단을 야기할 수 있는 문제를 해결했습니다.
  • Git 원격 추적 분기가 없을 때의 분기 관리 페이지의 푸시를 수정했습니다.
  • Xcode 12.2 지원이 추가되었습니다.

Developer Community



Release Notes Icon Visual Studio 2019 버전 16.8.2

‘릴리스 날짜: 2020년 11월 19일’

Visual Studio 2019 버전 16.8.2 릴리스에서 해결된 문제

  • 루프의 최적화 버그가 수정되었습니다.
  • 보장된 복사 생략(C++17 기능) 구현에서 내부 컴파일러 오류가 수정되었습니다.
  • 무명 형식의 대량 사용에 대한 빌드 성능 재발을 수정했습니다.
  • C# 코드를 편집할 때 “지정한 인수가 유효한 값 범위를 벗어났습니다”라는 메시지가 포함된 노란 표시줄이 나타나는 문제를 해결했습니다.
  • T4 템플릿이 있는 프로젝트를 빌드할 때 MissingMethodException을 발생시킬 수 있는 문제를 해결했습니다.
  • 새 프로젝트 대화 상자의 검색에서 결과가 전혀 반환되지 않을 수 있는 문제를 해결했습니다.

Developer Community



Release Notes Icon Visual Studio 2019 버전 16.8.1

‘릴리스 날짜: 2020년 11월 12일’

Visual Studio 2019 버전 16.8.1 릴리스에서 해결된 문제

  • 팀 탐색기에서 리포지토리를 복제할 때 “‘SourceExplorerPackage’ 패키지가 제대로 로드되지 않았습니다.” 경고가 표시되는, 많은 영향을 미치는 문제를 해결했습니다. 사용자에게 이 문제가 발생하면 제품이 응답하지 않을 수 있습니다.

Release Notes IconVisual Studio 2019 버전 16.8.0

‘릴리스 날짜: 2020년 11월 10일’

Visual Studio 2019 버전 16.8의 이번 릴리스 새로운 기능 요약


F#:

  • F# 5는 이제 .NET 5와 함께 출시됩니다.
  • F# 도구 버전 11.0.0을 통해 Visual Studio 도구에 대한 성능 향상 및 수정
  • GitHub에서 사용할 수 있는 전체 릴리스 정보

C++:

  • C++20 코루틴은 이제 /std:c++latest 및 <코루틴> 헤더에서 지원됩니다.
  • 이제 IntelliSense는 C++20 <개념> 및 <범위> 헤더를 지원하고, 개념 정의의 이름 바꾸기 및 검색을 제공합니다.
  • 이제 STL은 대부분의 C++20 범위를 지원합니다.
  • 이제 조건부로 트리비얼한 특수 멤버 함수가 MSVC에서 지원됩니다.
  • 이제 C11 및 C17은 /std:c11 및 //std:c17 스위치에서 지원됩니다.
  • 추가 STL 개선 사항에는 std::atomic_ref, std::midpoint와 std::lerpstd::execution::unseq, std::reverse_copy의 최적화 등에 대한 전체 지원이 포함됩니다.
  • Visual Studio와 함께 제공되는 CMake 버전을 CMake 3.18로 업그레이드했습니다.
  • 이제 코드 분석 도구는 업계 표준 정적 분석 로그 형식인 SARIF 2.1 표준을 지원합니다.
  • 이제 Linux 프로젝트의 누락된 빌드 도구는 도구 모음에서 경고를 표시하고, 오류 목록에서 누락된 도구에 대한 명확한 설명을 표시합니다.
  • 이제 Visual Studio에서 직접 원격 Linux 시스템 또는 WSL의 Linux 코어 덤프를 디버그할 수 있습니다.
  • C++ Doxygen 주석 생성의 경우 추가 주석 스타일 옵션(/*! 및 //!)을 추가했습니다.
  • 추가 vcpkg 알림
  • 확인되지 않은 컨텍스트에서 람다에 대한 컴파일러 지원
  • 다중 스레딩 pdb 생성으로 /debug:full 링크 성능 향상. 여러 대규모 애플리케이션 및 AAA 게임의 경우 연결이 2~4배 빨라집니다.
  • 이제 Visual Studio 디버거는 char8_t를 지원합니다.
  • clang-cl을 사용하여 ARM64 프로젝트 지원.
  • Intel AMX 내장 함수 지원.

디버거:

  • .NET Core Linux 코어 덤프 디버깅 지원
  • .NET 및 .NET Core 자동 분석
  • .NET 및 .NET Core 메모리 실행 부하 과다 경로 자동 분석

실험적 Razor 편집기 업데이트:

  • Blazor 전구
  • C# 전구
  • 향상된 Razor 서식 지정
  • .razor 파일에서 태그의 Razor 구성 요소 이름 바꾸기
  • Blazor 구성 요소 태그 네임스페이스에 대한 정의로 이동
  • C# 가리킨 항목 색 지정
  • C# 완성 도구 설명 색 지정
  • Razor에 대한 정의/구현으로 이동(닫힌 파일 포함)
  • 닫힌 Razor 파일의 모든 참조 찾기
  • 대규모 프로젝트 및 솔루션에 대한 Razor 편집 성능 및 안정성 향상

SDK 스타일 프로젝트를 사용하는 Fakes:

  • SDK 스타일 프로젝트에 새로운 Fakes 지원을 사용하는 경우 일부 사용자가 shim을 생성할 때 다음과 같은 오류가 발생함

Git 생산성:

  • 새 온라인 설명서에서 모든 Git 기능을 사용하는 방법에 대해 자세히 알아보기
  • 언제든지 Git 변경 내용 창, 보기 메뉴 및 상태 표시줄을 통해 Git 리포지토리 창 열기
  • Git 변경 내용 창에서 여러 원격으로부터 페치, 풀 및 푸시
  • Git 리포지토리 창 위쪽에서 Git 명령에 대한 성공 및 오류 메시지 보기
  • Azure DevOps 작업 항목에서 새 분기 만들기
  • Git 메뉴의 로컬 리포지토리 목록에서 Git 리포지토리를 엽니다.
  • 이제 기본 소스 제어 공급자는 TFVC 대신 Git
  • Git 리포지토리 창에서 한 번 클릭으로 분기 기록 간 전환
  • 리포지토리를 연 후 솔루션 탐색기에서 솔루션 목록 보기 및 해당 목록에서 선택
  • Git 리포지토리 창의 도구 모음을 통한 기록 보기 수정 및 커밋 검색
  • 분기의 기록 그래프에 있는 들어오는 커밋 및 나가는 커밋 섹션의 페치, 풀 및 푸시
  • 분기를 원격으로 푸시한 후 끌어오기 요청을 만들라는 메시지 표시
  • 분기 목록 상황에 맞는 메뉴의 병합 및 다시 지정 명령에서 분기 이름 보기
  • 솔루션 탐색기 및 편집기의 상황에 맞는 메뉴를 통한 Git 명령 액세스
  • 프로세스를 백그라운드로 이동하는 옵션이 있는 새 모달 대화 상자를 통해 복제 진행률 관찰

IntelliCode:

  • Visual Studio 설명서에서 개인 설정된 IntelliCode 완성 가져오기
  • 코드베이스를 사용하여 IntelliCode 완성을 최신 상태로 유지하고 팀의 CI 워크플로 설명서의 일부로 공유

.NET 생산성:

  • Roslyn 분석기는 이제 .NET 5.0 SDK에 포함
  • 제거 연산자가 있는 경우 새 C# 9 not 패턴 일치 구문을 도입하는 리팩터링
  • 단일 문 본문 내에서 정적, 인스턴스 및 확장 메서드의 사용을 바꾸는 데 도움이 되는 인라인 메서드 리팩터링
  • C#에서 typeof 인스턴스를 nameof로 변환하고 Visual Basic에서 GetTypeNameOf로 변환하는 코드 수정
  • 함수 호출의 각 인수 앞에 리터럴, 캐스팅된 리터럴 및 개체 인스턴스화의 도구 영역을 삽입하는 인라인 매개 변수 이름 힌트에 대한 C# 및 Visual Basic 지원
  • C# 및 Visual Basic 둘 다에서 선택한 클래스의 멤버를 새 기본 클래스로 추출하는 리팩터링
  • 코드 정리에 단일 파일이나 전체 솔루션에서 EditorConfig 파일에 설정된 서식 및 파일 헤더 기본 설정을 적용할 수 있는 새 구성 옵션을 포함
  • 인수가 참조로 전달되지 않아야 하는 in 키워드를 제거하는 코드 수정
  • 새 C#9 패턴 조합기 및 패턴 일치 제안(예: 해당하는 경우 is를 사용하도록 ==을 변환)을 도입하는 리팩터링
  • 추상이 아닌 클래스에서 추상 메서드를 작성하려고 할 때 클래스를 추상으로 설정하는 코드 수정
  • 첫 번째 따옴표를 입력하면 DateTime 및 TimeSpan 문자열 리터럴에서 IntelliSense 완성이 자동으로 표시
  • 불필요한 pragma suppressions 및 불필요한 SuppressMessageAttributes를 제거하기 위한 코드 수정
  • RenameFind All References는 전역 SuppressMessageAttributes의 대상 문자열 내의 기호에 대한 참조를 이해
  • ByVal을 제거하여 불필요함을 나타내고 불필요한 ByVal을 제거하는 코드 수정 사항 제공
  • .NET Framework, .NET Core 등의 여러 런타임에 대한 대화형 창 지원
  • 분석기 작성자가 추가 파일용 분석기를 만들 수 있는 새로운 RegisterAdditionalFileAction API를 추가

Visual Studio 2019 IDE:

  • 계정 관리 환경을 사용하여 Github 계정을 추가
  • 이 릴리스에서는 레거시 파일에서 찾기 환경이 사용되지 않으며 모든 사용자가 새로운 환경으로 이동됩니다. 편집기 팀은 최신 파일에서 찾기 환경에서 문제가 발생하여 Developer Community에 피드백을 남기는 사용자들과 협력하고 있습니다.
  • 이제 .NET Core 3.1 및 .NET 5.0 Windows 데스크톱 앱에서 ClickOnce 게시 공급자를 사용할 수 있습니다.

테스트 탐색기의 테스트 세부 정보 창 래핑:

  • 이제 테스트 탐색기의 테스트 세부 정보 창에서 텍스트를 래핑할 수 있습니다.

XAML 도구(WPF, UWP 및 Xamarin.Forms):

  • XAML 바인딩 실패 진단 개선 사항
  • XAML 핫 다시 로드 설정을 “디버깅 > 핫 다시 로드”로 이동
  • 참조되지 않는 NuGet 패키지에서 도구 상자 채우기

JavaScript/TypeScript:

  • 이제 JavaScript/TypeScript 디버거가 서비스 작업자, 웹 작업자, iFrames 및 페이지 JavaScript의 동시 디버깅을 지원합니다. 또한 새 디버깅 환경에서는 백 엔드 노드 서버 애플리케이션과 브라우저의 클라이언트 쪽 JavaScript 동시 디버깅에 대한 지원이 추가되었습니다. 이 기능은 아직 실험적입니다. 디버깅 옵션 메뉴에서 새 디버깅 환경을 사용하도록 설정할 수 있습니다.
  • 이제 코드 작업 바로 가기(ctrl+.)를 사용하여 리팩터링을 사용할 수 있는 모든 위치에서 트리거할 수 있습니다. 텍스트를 선택하지 않아도 됩니다. 이제 TypeScript는 사용할 수 있는 가장 적합한 리팩터링에 대한 커서 위치를 확인할 수 있습니다.
  • 이제 TypeScript에서 자동 가져오기 완료를 검색하는 패키지를 미세 조정할 수 있습니다. 이로 인해 일부 종속성이 많은 프로젝트에서 성능이 향상될 수 있습니다. 자세한 내용은 TypeScript 4.0(릴리스 정보)[https://www.typescriptlang.org/docs/handbook/release-notes/typescript-4-0.html]을 참조하세요.
  • Intellisense를 지원하기 위해 설치하는 형식을 표시하는 메시지를 출력 창에 추가했습니다. 사용되는 형식을 사용자 지정하려면 tsconfig를 프로젝트에 추가하는 것이 좋습니다.
  • TypeScript 4.0 컴파일러 및 언어 서비스가 포함되어 있습니다.

보안 권고 알림

CVE-2020-17100 Visual Studio 변조 취약성

Visual Studio용 Python 도구가 python27 폴더를 만들 때 변조 취약성이 존재합니다. 이 취약성을 성공적으로 악용한 공격자가 상승된 컨텍스트에서 프로세스를 실행할 수 있습니다.

이 릴리스에서 해결된 문제

  • Intel C++ 컴파일러의 80비트 long double을 사용하여 Visual Studio 2019 16.7에서 컴파일하는 경우 컴파일러 오류가 발생하여 프로젝트가 빌드되지 않는 문제를 해결했습니다.
  • 일부 시나리오에서 Live Unit Testing이 시작되지 않는 문제를 해결했습니다.
  • Visual Studio 2019 v16.8 미리 보기 4에 추가된 .NET 5.0.RC2
  • 간헐적으로 Git 작업이 시작되고 완료되지 않는 버그를 해결했습니다.
  • Visual Studio Codespaces 만들기 및 연결에 추가 기능을 추가했습니다.
  • ASP.NET Core 솔루션을 닫거나 탐색할 때 Visual Studio 2019가 크래시하거나 응답하지 않는 버그를 수정했습니다.
  • Visual Studio 2019를 제거했다가 다시 설치한 후 C++ 프로젝트 시스템이 로드되지 않는 문제를 해결했습니다.

Visual Studio 2019 버전 16.8.0의 새로운 기능에 대한 자세한 정보

C++

  • C++20 코루틴은 이제 /std:c++latest 및 <코루틴> 헤더에서 지원됩니다. <experimental/coroutine> 및 /await 스위치에서 레거시 동작이 지원됩니다.
  • 이제 IntelliSense는 C++20 <개념> 및 <범위> 헤더를 지원하고, 개념 정의의 이름 바꾸기 및 검색을 제공합니다. 미리 보기 4에서 해결할 것으로 예상하는 알려진 문제가 있습니다.
  • 이제 STL은 대부분의 C++20 범위를 지원합니다. 범위 GitHub 이슈의 진행률을 추적할 수 있습니다.
  • 이제 조건부로 트리비얼한 특수 멤버 함수가 MSVC에서 지원됩니다.
  • 이제 C11 및 C17은 /std:c11 및 //std:c17 스위치에서 지원됩니다.
  • 추가 STL 개선 사항에는 std::atomic_ref, std::midpoint와 std::lerpstd::execution::unseq, std::reverse_copy의 최적화 등에 대한 전체 지원이 포함됩니다. 변경 로그에서 모든 업데이트를 확인할 수 있습니다.
  • Visual Studio와 함께 제공되는 CMake 버전을 CMake 3.18로 업그레이드했습니다.
  • 이제 코드 분석 도구는 업계 표준 정적 분석 로그 형식인 SARIF 2.1 표준을 지원합니다. SARIF 형식에 대한 자세한 내용은 공식 사양을 참조하세요.
  • 이제 Linux 프로젝트의 누락된 빌드 도구는 도구 모음에서 경고를 표시하고, 오류 목록에서 누락된 도구에 대한 명확한 설명을 표시합니다.
  • 이제 Visual Studio에서 직접 원격 Linux 시스템 또는 WSL의 Linux 코어 덤프를 디버그할 수 있습니다.
  • C++ Doxygen 주석 생성의 경우 추가 주석 스타일 옵션(/*! 및 //!)을 추가했습니다.
  • 추가 vcpkg 알림
  • decltype 지정자에 람다를 사용할 수 있게 해주는, 확인되지 않은 컨텍스트의 람다에 대한 컴파일러 지원이 추가되었습니다.
  • 이제 Visual Studio에서 입력에 따른 Linter 및 픽스업을 사용할 수 있습니다. 도구 -> 옵션 -> 텍스트 편집기 -> C/C++ -> CodeStyle -> Linter + 픽스업을 사용하여 구성합니다.
As-you-type linter showing warning for using bitwise & instead of logical && on bools
입력에 따른 Linter

디버거

.NET Core Linux 코어 덤프 디버깅 지원

지금까지 Windows에서 관리형 Linux 코어 덤프를 디버그하는 것은 어려운 일이었습니다. 이는 일반적으로 프로덕션 환경과 정확히 일치하는 다른 Linux 환경을 설정하고 분석을 위한 도구 세트를 설치하는 것을 의미했습니다. 이제 Visual Studio 2019 16.8 미리 보기 3 덕분에 관리형 Linux 코어 덤프를 IDE에 직접 끌어서 놓고 즉시 디버깅을 시작할 수 있습니다.

.NET 자동 분석

비동기 프로그래밍은 .NET 플랫폼에서 수년간 제공되었지만 제대로 수행하기가 어려웠습니다. 다음과 같은 시나리오 및 안티 패턴을 식별하는 데 도움이 되는 관리되는 메모리 덤프 분석기를 도입했습니다.

  • Sync-over-Async
  • ‘Threadpool 소모’

.NET 및 .NET Core 메모리 실행 부하 과다 경로 자동 분석

이를 통해 고객은 진단 메모리 도구 창에서 플레임(flame) 주석을 사용하여 메모리 힙의 주 개체 형식을 직관적으로 볼 수 있습니다.

SDK 스타일 프로젝트를 사용하는 Fakes에서 shim 문제 발생

SDK 스타일 프로젝트에 새로운 Fakes 지원을 사용하는 경우 일부 사용자가 shim을 생성할 때 다음과 같은 오류가 발생했습니다.

Cannot generate shim for System.DateTime: type is not supported because of internal limitations

이에 대한 수정 사항은 16.8 Preview 3에서 릴리스되었습니다. 16.7.* 릴리스를 사용하는 경우 다음 해결 방법을 사용할 수 있습니다.

  1. csproj 파일의 PropertyGroup에 <FakesUseV2Generation>False</FakesUseV2Generation>을 추가합니다.
  2. csproj 파일의 ItemGroup에 <Fakes Include=“Fakes\*.fakes” />를 추가합니다.
  3. ProjectDir/FakesAssemblies에서 생성된 Fakes 어셈블리에 대한 참조를 추가합니다.

개발자 커뮤니티 피드백에 따라 추가 업데이트를 수행할 수도 있습니다.

실험적 Razor 편집기 업데이트

이제 새 실험적 Razor 편집기는 다음과 같은 Razor 편집 기능을 지원합니다.

  • Blazor 전구:
    • 코드 뒤에 추출*:
    • 태그에서 구성 요소 만들기*
    • 구성 요소에 대한 @using 지시문 추가
    • 구성 요소 태그 이름 정규화
  • C# 전구
    • @using 지시문 추가
    • 유형 이름 정규화
  • 향상된 Razor 서식 지정
  • .razor 파일에서 태그의 Razor 구성 요소 이름 바꾸기
  • Blazor 구성 요소 태그 이름에 대한 정의로 이동
  • C# 가리킨 항목 색 지정
  • C# 완성 도구 설명 색 지정
  • 닫힌 Razor 파일의 모든 참조 찾기
  • 대규모 프로젝트 및 솔루션에 대한 Razor 편집 성능 및 안정성 향상

* 로컬 Razor 시나리오에서만 작동하며 Visual Studio Codespaces 또는 Live Share에서는 아직 지원되지 않습니다.

실험적 Razor 편집기를 사용하도록 설정하려면 도구>옵션>환경>미리 보기 기능으로 이동한 후 Enable experimental Razor editor(실험적 Razor 편집기 사용)를 선택하고 Visual Studio를 다시 시작합니다.

Visual Studio 2019 IDE

  • 친숙한 Visual Studio 계정 관리 환경을 사용하여 GitHub 계정을 추가합니다. 그러면 버전 제어, 통합 터미널 및 기타 기능을 통해 사용자의 계정 자격 증명을 활용하여 GitHub 인증 요구 사항을 충족할 수 있습니다.
Inline parameter name hints with GitHub
Visual Studio에서 GitHub 계정 추가
  • 이제 .NET Core 3.1 및 .NET 5.0 Windows 데스크톱 앱에서 ClickOnce 게시 공급자를 사용할 수 있습니다. 시작하려면 솔루션 탐색기에서 프로젝트를 마우스 오른쪽 단추로 클릭하고 게시를 선택하거나 빌드 ><AppName> 게시 메뉴를 선택합니다. ClickOnce는 폴더 범주에서 찾을 수 있습니다.
Inline parameter name hints with GitHub Image
Visual Studio의 ClickOnce 게시 공급자

Git 생산성

  • Azure DevOps 작업 항목에서 새 분기 만들기
Create a new branch from an Azure DevOps work item
작업 항목에서 새 분기 만들기
  • Git 메뉴의 로컬 리포지토리 목록에서 Git 리포지토리를 엽니다.
Local Repositories list
Git 메뉴의 로컬 리포지토리 목록
  • 이제 기본 소스 제어 공급자는 TFVC 대신 Git이며, 도구 - 옵션 - 소스 제어에서 변경할 수 있습니다.

  • Git 리포지토리 창에서 한 번 클릭으로 분기 기록 간 전환

  • 리포지토리를 연 후 솔루션 탐색기 리포지토리의 솔루션 목록 보기 및 선택

Preview Feature toggle to show list of Views when opening a repo
‘리포지토리를 열 때 보기 목록을 표시하는 미리 보기 기능 토글’
List of Views in Solution Explorer
‘솔루션 탐색기의 보기 목록’

.NET 생산성

  • .NET 컴파일러 플랫폼(Roslyn) 분석기는 C# 또는 Visual Basic 코드를 검사하여 보안, 성능, 디자인 및 기타 문제를 확인합니다. .NET 5.0부터 이러한 분석기는 .NET SDK에 포함되어 있습니다. .NET 5.0 이상을 대상으로 하는 프로젝트의 경우 분석기가 기본적으로 사용하도록 설정되어 있습니다. EnableNETAnalyzers 속성을 true로 설정하여 이전 버전의 .NET을 대상으로 하는 프로젝트에서 코드 분석을 사용하도록 설정할 수 있습니다. EnableNETAnalyzersfalse로 설정하여 프로젝트에서 코드 분석을 사용하지 않도록 설정할 수 있습니다. 프로젝트 속성 창을 사용하여 .NET 분석기를 사용하거나 사용하지 않도록 설정할 수도 있습니다. 프로젝트 속성 창에 액세스하려면 솔루션 탐색기 내에서 프로젝트를 마우스 오른쪽 단추로 클릭하고 속성을 선택합니다. 그런 다음, .NET 분석기 사용 확인란을 선택하거나 선택 취소할 수 있는 코드 분석 탭을 선택합니다.
Project Properties window to enable .NET Analyzers
.NET 분석기를 사용하도록 설정하는 프로젝트 속성 창
  • 이제 제거 연산자가 있는 경우 새 C# 9 not 패턴 일치 구문을 도입하는 리팩터링이 있습니다. 비표시 오류(Suppression) 연산자에 커서를 놓습니다. (Ctrl+.)을 눌러 빠른 작업 및 리팩터링 메뉴를 트리거합니다. ‘패턴 일치 사용’을 선택합니다.
Refactoring introducing C# 9 not pattern matching syntax
C# 9 not 패턴 일치 구문을 도입하는 리팩터링
  • 이제 원래 메서드 선언을 제거하는 옵션과 함께 단일 문 본문 내에서 정적, 인스턴스 및 확장 메서드의 사용을 바꾸는 데 도움이 되는 인라인 메서드 리팩터링이 있습니다. 메서드 사용에 커서를 놓습니다. (Ctrl+.)을 눌러 빠른 작업 및 리팩터링 메뉴를 트리거합니다. 다음으로, 다음 옵션 중 하나를 선택합니다.

인라인 메서드 선언을 제거하려면 인라인 <QualifiedMethodName> 을 선택합니다.

Inline Method refactoring removing declaration
선언을 제거하는 인라인 메서드 리팩터링

인라인을 선택하고 유지하여 원래 메서드 선언을 유지 <QualifiedMethodName> 합니다.

Inline Method refactoring preserving declaration
선언을 유지하는 인라인 메서드 리팩터링
  • 템플릿에서 새 C# 파일 또는 Visual Basic 파일을 만들 때는 EditorConfig 코드 스타일 설정을 따릅니다. 몇 가지 코드 스타일(파일 헤더, using 지시문 정렬, 네임스페이스 내외부에 using 지시문 배치)은 새 파일을 만들 때 자동으로 적용됩니다.

  • 이제 함수 호출의 각 인수 앞에 리터럴, 캐스팅된 리터럴 및 개체 인스턴스화의 도구 영역을 삽입하는 인라인 매개 변수 이름 힌트에 대한 C# 및 Visual Basic 지원이 있습니다. 먼저 도구>옵션>텍스트 편집기>C# 또는 Basic>고급에서 이 옵션을 켜고 인라인 매개 변수 이름 힌트 표시(실험적)를 선택해야 합니다. 그러면 C# 또는 Visual Basic 파일에서 인라인 매개 변수 이름 힌트가 표시됩니다.

Inline parameter name hints
‘인라인 매개 변수 이름 힌트’
  • 이제 새 기본 클래스 추출 리팩터링을 사용하여 선택한 클래스의 멤버를 새 기본 클래스로 추출할 수 있습니다. 클래스 이름 또는 강조 표시된 멤버에 커서를 놓습니다. (Ctrl+.)을 눌러 빠른 작업 및 리팩터링 메뉴를 트리거합니다. 새 기본 클래스까지 멤버를 풀하세요...를 선택합니다. 새 기본 클래스 추출 대화 상자가 열립니다. 여기서 기본 클래스의 이름과 기본 클래스를 배치해야 할 위치를 지정할 수 있습니다. 새 기본 클래스로 전송할 멤버를 선택하고 추상으로 지정 열에서 확인란을 선택하여 멤버를 추상으로 지정할 수 있습니다.
Extract Base Class
‘기본 클래스 추출’

확인을 선택하면 새 기본 클래스가 해당 멤버와 함께 추가된 것을 볼 수 있습니다.

C#의 경우 typeofnameof로 변환을 선택합니다.

Convert typeof to nameof
typeof를 nameof로 변환

Visual Basic의 경우 GetTypeNameOf로 변환을 선택합니다.

Convert GetType to NameOf
‘GetType을 NameOf로 변환’
  • 코드 정리에 단일 파일이나 전체 솔루션에서 EditorConfig 파일에 설정된 서식 및 파일 헤더 기본 설정을 적용할 수 있는 새 구성 옵션이 있습니다.
Formatting and File Header support in Code Cleanup
‘코드 정리의 서식 및 파일 헤더 지원’
  • 이제 인수가 참조로 전달되지 않아야 하는 in 키워드를 제거하는 코드 수정 사항이 있습니다. 커서를 오류에 놓습니다. (Ctrl+.)을 눌러 빠른 작업 및 리팩터링 메뉴를 트리거합니다. ‘‘in’ 키워드 제거’를 선택합니다.
Remove in keyword code fix
'in' 키워드 코드 수정 제거
  • 이제 새로운 C#9 패턴 연결자를 도입하는 리팩터링이 있습니다. 해당하는 경우 is를 사용하도록 ==을 변환하는 것과 같은 패턴 일치 제안과 함께 이 코드 수정 사항은 여러 패턴을 일치시키고 부정할 때 and, ornot 패턴 연결자도 제안합니다. 문 내부에 커서를 놓습니다. (Ctrl+.)을 눌러 빠른 작업 및 리팩터링 메뉴를 트리거합니다. ‘패턴 일치 사용’을 선택합니다.
Introduce C#9 Pattern Combinators
‘C#9 패턴 연결자 도입’
  • 이제 추상이 아닌 클래스에서 추상 메서드를 작성하려고 할 때 클래스를 추상으로 설정하는 코드 수정 사항이 있습니다. 메서드 오류에 커서를 놓습니다. (Ctrl+.)을 눌러 빠른 작업 및 리팩터링 메뉴를 트리거합니다. ‘클래스를 ‘abstract’로 설정’을 선택합니다.
Make Class Abstract
‘클래스를 추상으로 설정’
  • 16.7 미리 보기 1에서는 DateTime 및 TimeSpan 문자열 리터럴에 IntelliSense 완성을 추가했습니다. 이 릴리스에서는 첫 번째 따옴표를 입력하면 이 완성 목록이 자동으로 나타납니다. 이전에는 이 완성 목록을 보려면 (Ctrl+’스페이스바’)를 입력해야 했습니다. DateTime 또는 TimeSpan 문자열 리터럴 내부에 커서를 놓고 첫 번째 큰따옴표를 입력합니다. 그러면 완성 옵션과 각 문자의 의미에 대한 설명이 표시됩니다. 날짜/시간 형식과 예시가 모두 제공됩니다.
IntelliSense Completion in DateTime and TimeSpan String Literals
‘DateTime 및 TimeSpan 문자열 리터럴의 IntelliSense 완성’
This improvement also works for interpolated strings when you type a colon
‘이 개선 사항은 콜론을 입력할 때 보간된 문자열에도 작동합니다.’
  • 이제 불필요한 pragma 비표시 오류(Suppression) 및 불필요한 SuppressMessageAttributes를 제거하는 코드 수정 사항이 있습니다. pragma 경고 또는 SuppressMessageAttribute에 커서를 놓습니다. (Ctrl+.)을 눌러 빠른 작업 및 리팩터링 메뉴를 트리거합니다. ‘불필요한 비표시 오류(Suppression) 연산자 제거’를 선택합니다.
Remove Unnecessary Pragmas
‘불필요한 Pragma 제거’
Remove Unnecessary SuppressMessageAttributes
‘불필요한 SuppressMessageAttribute 제거’
  • 이제 ‘이름 바꾸기’ 및 ‘모든 참조 찾기’가 전역 SuppressMessageAttribute 비표시 오류(Suppression)의 대상 문자열 내 기호에 대한 참조를 인식합니다.
Rename SuppressMessageAttribute
‘SuppressMessageAttribute 이름 바꾸기’
Find All References for SuppressMessageAttribute
‘SuppressMessageAttribute에 대한 모든 참조 찾기’
  • Visual Basic은 매개 변수를 전달하는 여러 가지 방법 ByValByRef를 제공해 왔으며, 오랫동안 ByVal은 선택 사항이었습니다. 이제 ByVal을 제거하여 이 방법이 불필요함을 나타내고, 불필요한 ByVal을 제거하는 코드 수정 사항을 제공합니다. ByVal 키워드에 커서를 놓습니다. (Ctrl+.)을 눌러 빠른 작업 및 리팩터링 메뉴를 트리거합니다. ‘ByVal’ keyword is unnecessary and can be removed(‘ByVal’ 키워드는 불필요하며 제거할 수 있음)를 선택합니다.
Visual Basic Remove ByVal Refactoring
‘Visual Basic에서 ByVal 리팩터링 제거’
  • 이제 .NET Framework, .NET Core 등의 여러 런타임에 대한 대화형 창 지원이 제공됩니다.
Interactive Window Support in .NET Core
‘.NET Core의 대화형 창 지원’
  • 분석기 작성자가 추가 파일용 분석기를 만들 수 있는 새로운 RegisterAdditionalFileAction API가 있습니다.

테스트 탐색기의 테스트 세부 정보 창 래핑

많은 요청을 받았던 이 기능을 사용하면 텍스트 배치를 선택하거나 기본 텍스트 줄 맞춤을 그대로 유지할 수 있습니다. 텍스트 맞춤이 필요하지 않은 경우에도 래핑하여 테스트 실행의 피드백을 훨씬 더 쉽게 확인할 수 있으며 가로 스크롤 막대가 필요 없게 됩니다. 테스트 탐색기 설정 메뉴 또는 요약 창의 상황에 맞는 메뉴에서 이 기능을 사용하도록 설정할 수 있습니다.

Wrap test details from the Test Settings menu
테스트 설정 메뉴
Wrap test details from the right-click context menu
오른쪽 클릭 상황에 맞는 메뉴의 테스트 정보 래핑

XAML 도구(WPF, UWP 및 Xamarin.Forms)

XAML 바인딩 실패 진단 개선 사항

WPF, UWP, WinUI 및 Xamarin.Forms 프로젝트에서 작업하는 개발자는 종종 애플리케이션에서 XAML 데이터 바인딩 오류를 검색하고 해결해야 합니다. 이 시나리오에서 진단 도구를 개선하기 위해 Visual Studio 2019 버전 16.8 이상에 두 가지 새로운 환경을 추가했습니다.

  • XAML 바인딩 실패 표시기 아이콘: 이제 WPF 및 UWP 프로젝트의 앱 내 도구 모음과 Xamarin.Forms를 비롯한 모든 XAML 프로젝트의 라이브 시각적 트리에 새 XAML 바인딩 실패 표시기 아이콘이 표시됩니다. 하나 이상의 바인딩 실패가 검색되면 이 아이콘에 빨간색 표시기가 표시됩니다. 또한 이 아이콘을 클릭하면 새 XAML 바인딩 실패 창으로 이동합니다.
Binding Failure Icon (in-app toolbar)
바인딩 실패 아이콘(앱 내 도구 모음)
  • XAML 바인딩 실패 창: 이제 WPF, UWP, WinUI 및 Xamarin.Forms 프로젝트에 새 XAML 바인딩 실패 창을 사용할 수 있습니다. 이 새로운 전용 환경에서는 이전에 출력 창에서만 사용할 수 있었던 바인딩 실패 정보에 대한 풍부한 사용자 인터페이스를 제공합니다. 향상된 기능에는 실패를 정렬하고, 사용자 지정하고, 완벽하게 검색할 수 있는 열 집합으로 표시하는 기능이 포함됩니다. 또한 원래 원시 오류 정보를 모두 제공하고 오른쪽 클릭 메뉴 옵션으로 손쉽게 복사할 수 있는 동시에 특정 데이터 바인딩 템플릿 실패가 결합되어 발생할 수 있는 노이즈를 제한하기 위해 유사한 오류를 그룹화했습니다. (참고: Xamarin 버전 4.5.0.266-pre3 이상 필요)
  • 바인딩 실패에 대한 원본으로 이동: WPF 팀과 협력하여 .NET 5(RC2 이상)에서 WPF를 대상으로 하는 고객을 위해 바인딩 실패의 원본으로 이동하는 기능을 사용하도록 설정했습니다.
XAML Binding Failure Window & LVT Icon
XAML 바인딩 실패 창 및 LVT 아이콘

XAML 핫 다시 로드

  • Xamarin.Forms “변경 내용만” XAML 핫 다시 로드가 이제 UWP를 지원함: 이 릴리스에서는 UWP를 대상으로 할 때 Xamarin.Forms 프로젝트에서 새로운 변경 내용만 XAML 핫 다시 로드 지원을 사용할 수 있는, 요청이 많은 기능에 대한 지원을 출시하기 시작합니다. 이 기능은 아직 개발 중이며, XAML을 편집하는 동안 이제 실행 중인 앱의 업데이트가 트리거되고, 앱 내 도구 모음(요소 선택 등) 같은 다른 기능은 아직 완전히 구현되지 않았지만 향후 릴리스에 포함할 예정입니다.
  • XAML 핫 다시 로드 설정을 “디버깅 > 핫 다시 로드”로 이동: 이 릴리스에서는 WPF, UWP, Xamarin.Forms의 XAML 핫 다시 로드 설정을 “디버깅 > 핫 다시 로드” 아래의 단일 설정 화면으로 통합했습니다. 또한 이 기능을 사용할 수 있는 경우를 완벽하게 제어할 수 있도록 플랫폼마다 XAML 핫 다시 로드를 사용하거나 사용하지 않도록 설정하는 기능을 처음으로 구현했습니다. (참고: 이 마이그레이션 중에는 설정이 변경되지 않으므로 모든 기존 선택 항목이 이 새 위치 바로 아래에서 계속 적용됩니다.)
XAML Hot Reload Consolidated Settings
XAML 핫 다시 로드 통합 설정

XAML 코드 편집기:

  • WinUI 3.0 IntelliSense 지원: 이 릴리스에서는 새로운 WinUI 3.0 미리 보기 3 이상 버전을 사용하여 앱을 빌드하는 개발자를 위해 더 나은 IntelliSense 지원을 사용하도록 설정했습니다. WinUI 3.0에 대한 자세한 내용은 설명서를 참조하세요. 피드백을 제공하려면 Windows UI XAML GitHub 리포지토리를 방문하세요. 참고: 업데이트된 도구 환경을 위해 16.9 미리 보기 1에서 최신 WinUI 3.0 미리 보기를 사용하는 것이 좋습니다.
  • MVVM 지원 개선: XAML 문서를 작성할 때 d:DataContext를 설정하여 XAML 문서에 대한 정확한 바인딩 IntelliSense를 가져올 수 있습니다. 이전에는 데이터 컨텍스트 형식을 수동으로 지정하려면 번거로웠습니다. XAML 문서를 나간 다음에 원하는 뷰 모델 형식을 찾아 해당 네임스페이스 및 이름을 복사하여 d:DataContext 선언에 붙여넣어야 했기 때문입니다. 이 릴리스에서는 가능한 뷰 모델 후보를 제안하는 전구를 통해 d:DataContext를 신속하게 선언하도록 해주는 새 기능을 도입합니다.
XAML IntelliSense for MVVM d:DataContext
MVVM d:DataContext용 XAML IntelliSense

확장성

Developer Community



알려진 문제

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

피드백 및 제안

많은 의견 부탁드립니다! 문제가 있으면 설치 관리자나 Visual Studio IDE 자체의 오른쪽 위에서 문제 보고 옵션을 통해 알려주세요. Feedback Icon 아이콘은 오른쪽 위 모서리에 있습니다. Visual Studio 개발자 커뮤니티에서 제품에 대해 제안하거나 문제를 추적하고, 질문하고 대답을 찾고 새로운 기능을 제안할 수 있습니다. 라이브 채팅 지원을 통해 무료 설치 도움말을 가져올 수도 있습니다.


Blogs

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


Visual Studio 2019 릴리스 정보 기록

이전 버전의 Visual Studio 2019와 관련된 자세한 내용은 Visual Studio 2019 릴리스 정보 기록 페이지를 참조하세요.


맨 위로 이동