Visual Studio IconVisual Studio 2019 버전 16.0 릴리스 정보


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


참고 항목

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



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

지원 기간

이제 Visual Studio 2019 버전 16.0은 지원되지 않습니다.

Visual Studio 2019 버전 16.0의 엔터프라이즈 및 전문 사용자에게 지원되었으며, 2021년 1월까지 보안 취약점에 대한 수정 사항을 수신했습니다. 이 시간은 2019년 12월에 Visual Studio 2019 버전 16.4가 Visual Studio 2019 제품의 차기 서비스 기준으로 지정되었다는 사실에 따라 결정되었습니다. Visual Studio에서 지원 기준에 대한 자세한 내용은 Visual Studio 2019 지원 정책을 참조하세요. 

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

Visual Studio 2019 버전 16.0 릴리스

Visual Studio 2019 블로그

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


Release Notes Icon Visual Studio 2019 버전 16.0.22

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

16.0.22에 대한 보안 공지 알림

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

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

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

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


Release Notes Icon Visual Studio 2019 버전 16.0.21

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

16.0.21에 대한 보안 공지 알림

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

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


Release Notes Icon Visual Studio 2019 버전 16.0.20

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

16.0.20에 대한 보안 공지 알림

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

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


Release Notes Icon Visual Studio 2019 버전 16.0.19

릴리스 날짜: 2020년 10월 13일

이 릴리스의 16.0.19에서

  • .NET 코드 SDK 2.1.616이 Visual Studio 2019에 추가되었습니다.

Release Notes Icon Visual Studio 2019 버전 16.0.18

‘릴리스 날짜: 2020년 9월 8일’

16.0.18에서 해결된 문제

  • .NET Core의 지원되지 않는 버전은 VS 설치 외부에서 제거된 경우 복구 또는 업그레이드 중에 더 이상 다시 설치되지 않습니다.

16.0.18에 대한 보안 공지 알림

CVE-2020-1130 진단 허브 표준 수집기 권한 상승 취약성

진단 허브 표준 수집기가 데이터 작업을 잘못 처리하는 경우 권한 상승 취약성이 존재합니다. 이 취약성을 성공적으로 악용한 공격자가 상승된 컨텍스트에서 프로세스를 실행할 수 있습니다.

CVE-2020-1133 진단 허브 표준 수집기 권한 상승 취약성

진단 허브 표준 수집기가 파일 작업을 잘못 처리하는 경우 권한 상승 취약성이 존재합니다. 이 취약성을 성공적으로 악용한 공격자가 상승된 컨텍스트에서 프로세스를 실행할 수 있습니다.

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

메모리에서 개체를 부적절하게 처리하는 경우 원격 코드 실행 취약성이 Visual Studio에 존재합니다. 취약성을 이용할 줄 아는 공격자는 현재 사용자의 컨텍스트에서 임의 코드를 실행할 수 있습니다.

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

메모리에서 개체를 부적절하게 처리하는 경우 원격 코드 실행 취약성이 Visual Studio에 존재합니다. 취약성을 이용할 줄 아는 공격자는 현재 사용자의 컨텍스트에서 임의 코드를 실행할 수 있습니다.

CVE-2020-1045 Microsoft ASP.NET 핵심 보안 기능 바이패스 취약성

보안 기능 바이패스 취약성은 Microsoft ASP.NET Core에서 인코딩된 쿠키 이름을 구문 분석하는 방식으로 존재합니다. ASP.NET Core 쿠키 파서는 악의적인 공격자가 이름이 퍼센트 인코딩된 두 번째 쿠키를 설정하는 데 사용할 수 있는 전체 쿠키 문자열을 디코딩합니다.


Release Notes Icon Visual Studio 2019 버전 16.0.17

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

16.0.17에서 해결된 문제

16.0.17에 대한 보안 공지 알림

CVE-2020-1597 ASP.NET 핵심 서비스 거부 취약성

ASP.NET Core가 웹 요청을 잘못 처리할 경우 서비스 거부 취약성이 존재합니다. 이 취약성을 악용하는 공격자는 ASP.NET Core 웹 애플리케이션에 대한 서비스 거부로 이어질 수 있습니다. 취약성은 인증 없이 원격으로 악용될 수 있습니다.


Release Notes Icon Visual Studio 2019 버전 16.0.16

‘릴리스 날짜: 2020년 7월 14일’

16.0.16에서 해결된 문제

  • v15.9에서 가상 함수를 호출하기 위한 컴파일러 CodeGen 재발 문제가 해결되었습니다.
  • DLL 이름의 접미사에 다른 대/소문자 표기가 적용된 상위 LIB를 사용할 때 C++ 링커에서 가져오기가 누락되는 버그가 해결되었습니다.
  • ARM64 C++ 컴파일러에서 setjmp 후 잘못된 값이 복원될 수 있는 버그가 해결되었습니다.

16.0.16에 대한 보안 공지 알림

CVE-2020-1393 진단 허브 표준 수집기 서비스 권한 상승 취약성

권한 상승 취약성은 Windows 진단 허브 표준 수집기 서비스에서 입력을 제대로 삭제하지 못해 안전하지 않은 라이브러리 로드 동작이 발생하는 경우에 존재합니다.

CVE-2020-1416 Visual Studio 권한 상승 취약성

권한 상승 취약성은 Visual Studio에서 소프트웨어 종속성을 로드할 때 존재합니다.

CVE-2020-1147 .NET Core 서비스 거부 취약성

인증되지 않은 원격 공격자가 ASP.NET Core 애플리케이션이나 특정 형식의 XML을 구문 분석하는 다른 애플리케이션에 대해 특별히 구성된 요청을 실행하여 이 취약성을 악용할 수 있습니다. 보안 업데이트는 XML 페이로드에 있을 수 있는 형식을 제한하여 이 취약성을 해결합니다.


Release Notes Icon Visual Studio 2019 버전 16.0.15

‘릴리스 날짜: 2020년 6월 9일’

16.0.15에서 해결된 문제

16.0.15에 대한 보안 공지 알림

CVE-2020-1108 / CVE-2020-1108.NET Core 서비스 거부 취약성

CVE-2020-1108을 완전히 해결하기 위해 Microsoft는 .NET Core 2.1 및 .NET Core 3.1에 대한 업데이트를 릴리스했습니다. 이 버전의 .NET Core를 사용하는 고객은 최신 버전의 .NET Core를 설치해야 합니다. 최신 버전 번호와 .NET Core 업데이트에 대한 지침은 릴리스 정보를 참조하세요.

CVE-2020-1202 / CVE-2020-1203 진단 허브 표준 수집기 서비스 권한 상승 취약성

진단 허브 표준 수집기 또는 Visual Studio Standard Collector가 메모리에서 개체를 올바르게 처리하지 못하는 경우 권한 상승 취약성이 존재합니다.

CVE-2020-1293 / CVE-2020-1278 / CVE-2020-1257 진단 허브 표준 수집기 서비스 권한 상승 취약성

진단 허브 표준 수집기 서비스가 파일 작업을 잘못 처리하는 경우 권한 상승 취약성이 존재합니다.


Release Notes Icon Visual Studio 2019 버전 16.0.14

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

16.0.14에서 해결된 문제

  • Enterprise IT 관리자 및 배포 엔지니어가 Microsoft 업데이트 카탈로그 및 WSUS에서 호스트된 VS2019 16.0 업데이트의 가용성을 확인하기 위해 Microsoft 업데이트 클라이언트 및 SCCM과 같은 도구를 구성할 수 있도록 하는 변경을 추가했습니다.

16.0.14에 대한 보안 공지 알림

CVE-2020-1108 .NET Core 서비스 거부 취약성

인증되지 않은 원격 공격자가 .NET Core 애플리케이션에 특별히 구성된 요청을 발행하여 이 취약성을 악용할 수 있습니다. 보안 업데이트는 .NET Core 웹 애플리케이션이 웹 요청을 처리하는 방법을 수정하여 취약성을 해결합니다.


Release Notes Icon Visual Studio 2019 버전 16.0.13

‘릴리스 날짜: 2020년 4월 14일’

16.0.13에 대한 보안 권고 알림

CVE-2020-0899 Microsoft Visual Studio 권한 상승 취약성

Microsoft Visual Studio 업데이트 프로그램 서비스에서 파일 사용 권한을 부적절하게 처리하는 경우에 권한 상승 취약성이 존재합니다. 이 취약성을 성공적으로 악용한 공격자는 로컬 시스템의 보안 컨텍스트에서 임의의 파일 콘텐츠를 덮어쓸 수 있습니다.

CVE-2020-0900 Visual Studio 확장 설치 프로그램 서비스의 권한 상승 취약성

Visual Studio 확장 설치 프로그램 서비스가 파일 작업을 부적절하게 처리하는 경우에 권한 상승 취약성이 존재합니다. 취약성을 성공적으로 악용한 공격자는 상승한 권한으로 임의의 위치에서 파일을 삭제할 수 있습니다.

CVE-2020-5260 URL에 대한 유효성 검사가 충분하지 않음으로 인한 Git for Visual Studio 자격 증명 누출 취약성

특수하게 작성된 URL이 구문 분석되어 자격 증명 도우미로 전송되는 경우에 자격 증명 누출 취약성이 존재합니다. 이로 인해 잘못된 호스트로 자격 증명이 전송될 수 있습니다.


Release Notes Icon Visual Studio 2019 버전 16.0.12

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

16.0.12에서 해결된 문제

보안 권고 알림

CVE-2020-0793CVE-2020-0810 진단 허브 표준 수집기 서비스 권한 상승 취약성

권한 상승 취약성은 진단 허브 표준 수집기가 파일 작업을 부적절하게 처리하거나 Windows 진단 허브 표준 수집기 서비스에서 입력을 제대로 삭제하지 못하는 경우에 존재합니다.

CVE-2020-0884 Outlook Web -Add-in을 만들 때 스푸핑 취약성

다단계 인증을 사용하는 경우 Outlook 웹 추가 기능을 만들 때 스푸핑 취약성이 있습니다.

CVE-2020-0789 Visual Studio 확장 설치 프로그램 서비스의 서비스 거부 취약성

Visual Studio 확장 설치 프로그램 서비스가 하드 링크를 부적절하게 처리할 때 서비스 거부 취약성이 존재합니다. 아 취약성을 성공적으로 악용한 공격자는 대상 시스템이 응답하지 않게 만들 수 있습니다.


Release Notes Icon Visual Studio 2019 버전 16.0.11

‘릴리스 날짜: 2020년 1월 14일’

보안 권고 알림

CVE-2020-0602 ASP.NET Core 서비스 거부 취약성

인증되지 않은 원격 공격자가 ASP.NET Core 애플리케이션에 특별히 구성된 요청을 발행하여 이 취약성을 악용할 수 있습니다. 보안 업데이트는 ASP.NET Core 웹 애플리케이션이 웹 요청을 처리하는 방법을 수정하여 취약성을 해결합니다.

CVE-2020-0603 ASP.NET Core 원격 코드 실행 취약성

인증되지 않은 원격 공격자가 ASP.NET Core 애플리케이션에 특별히 구성된 요청을 발행하여 이 취약성을 악용할 수 있습니다. 보안 업데이트는 ASP.NET Core 웹 애플리케이션이 메모리에서 처리되는 방법을 수정하여 취약성을 해결합니다.


Release Notes Icon Visual Studio 2019 버전 16.0.10

릴리스 날짜: 2019년 12월 10일

16.0.10에서 해결된 문제

보안 권고 알림

CVE-2019-1349 하위 모듈 이름의 너무 느슨한 제한으로 인한 Visual Studio 원격 실행 취약성 관련 Git

Git에서 형제 하위 모듈 디렉터리의 하위 모듈 이름 충돌이 발생할 경우 원격 코드 실행 취약성이 존재합니다. 이 취약성을 성공적으로 악용한 공격자는 대상 머신에서 코드를 원격으로 실행할 수 있습니다. 보안 업데이트는 하위 모듈 클론의 디렉터리를 비워 두도록 요구하는 새 버전의 Windows용 Git을 사용하여 취약성을 해결합니다.

CVE-2019-1350 명령줄 인수의 잘못된 따옴표 넣기로 인한 Visual Studio 원격 실행 취약성 관련 Git

Git에서 SSH URL과 함께 재귀 클론을 사용하는 동안 특정 따옴표가 있는 명령줄 인수를 해석할 때 원격 코드 실행 취약성이 존재합니다. 이 취약성을 성공적으로 악용한 공격자는 대상 머신에서 코드를 원격으로 실행할 수 있습니다. 보안 업데이트는 이 문제를 해결하는 새 버전의 Windows용 Git을 사용하여 취약성을 해결합니다.

CVE-2019-1351 복제 중 문자 아닌 드라이브 이름 사용으로 인한 Visual Studio 임의 파일 덮어쓰기 취약성 관련 Git

문자가 아닌 드라이브 이름이 git clone의 안전 검사를 무시하는 경우 Git에 임의 파일 덮어쓰기 취약성이 존재합니다. 이 취약성을 성공적으로 악용한 공격자는 대상 머신의 임의 파일에 쓸 수 있습니다. 보안 업데이트는 이 문제를 해결하는 새 버전의 Windows용 Git을 사용하여 취약성을 해결합니다.

CVE-2019-1352 NTFS 대체 데이터 스트림 인식 불가로 인한 Visual Studio 원격 실행 취약성 관련 Git

NTFS 대체 데이터 스트림을 통해 .git/ 디렉터리를 복제하고 이 디렉터리에 쓸 때 Git에 원격 코드 실행 취약성이 존재합니다. 이 취약성을 성공적으로 악용한 공격자는 대상 머신에서 코드를 원격으로 실행할 수 있습니다. 보안 업데이트는 NTFS 대체 데이터 스트림을 인식하도록 지정된 새 버전의 Windows용 Git을 사용하여 취약성을 해결합니다.

CVE-2019-1354 백슬래시가 포함된 추적 파일 작성 허용으로 인한 Visual Studio 임의 파일 덮어쓰기 취약성 관련 Git

백슬래시와 악의적인 symlink가 있는 트리 항목이 작업 트리를 벗어날 수 있는 경우 Git에 임의 파일 덮어쓰기 취약성이 존재합니다. 이 취약성을 성공적으로 악용한 공격자는 대상 머신의 임의 파일에 쓸 수 있습니다. 보안 업데이트는 이러한 백슬래시 사용을 허용하지 않는 새 버전의 Windows용 Git을 사용하여 취약성을 해결합니다.

CVE-2019-1387 재귀 클론에서 하위 모듈 이름의 너무 느슨한 유효성 검사로 인한 Visual Studio 원격 실행 취약성 관련 Git

하위 모듈을 재귀적으로 복제할 때 Git에 원격 코드 실행 취약성이 있습니다. 이 취약성을 성공적으로 악용한 공격자는 대상 머신에서 코드를 원격으로 실행할 수 있습니다. 보안 업데이트는 하위 모듈 이름의 유효성 검사를 엄격히 수행하는 새 버전의 Windows용 Git을 사용하여 취약성을 해결합니다.

CVE-2019-1486 Live Share 확장 URL 리디렉션 취약점

Live Share 세션에 연결된 게스트가 세션 호스트에서 지정한 임의 URL로 리디렉션될 때 Visual Studio Live Share 확장에서 스푸핑 취약성이 검색되었습니다. 공격자는 이 취약성을 성공적으로 악용하여 명시적인 동의 없이 게스트 컴퓨터에서 브라우저를 열고 악성 URL로 이동할 수 있습니다. 이것은 활성 Live Share 세션 중에 자동 포트 전달을 허용하는 Live Share의 "공유 서버" 기능에 속합니다. 최신 업데이트는 호스트에서 지정한 URL을 찾기 전에 Live Share 게스트에 동의를 요청하여 이 취약성을 해결합니다.


Release Notes Icon Visual Studio 2019 버전 16.0.9

릴리스 날짜: 2019년 10월 15일

보안 권고 알림

CVE-2019-1425 NPM 패키지 권한 상승 취약성(2019년 11월 12일에 게시됨)

Visual Studio에서 보관된 파일을 추출할 때 하드 링크의 유효성 검사를 적절히 수행하지 못하는 경우 권한 상승 취약성이 있습니다. 취약성은 다음 두 NPM 자문에서 설명한 것처럼 Visual Studio에서 사용하는 NPM 패키지에서 시작되었습니다. npmjs.com/advisories/803npmjs.com/advisories/886. 이러한 NPM 패키지의 업데이트된 버전이 이 버전의 Visual Studio에 포함되었습니다.


Release Notes Icon Visual Studio 2019 버전 16.0.8

릴리스 날짜: 2019년 9월 10일

Visual Studio 2019 버전 16.0.8에서 해결된 문제

보안 권고 알림

CVE-2019-1232 진단 허브 표준 수집기 서비스 권한 상승 취약성

진단 허브 표준 수집기 서비스가 특정 파일 작업을 잘못 가장하는 경우 권한 상승 취약성이 존재합니다. 이 취약성을 성공적으로 악용한 공격자가 상승된 권한을 얻을 수 있습니다. 취약한 시스템에 대한 권한 없는 액세스 권한이 있는 공격자는 이 취약성을 악용할 수 있습니다. 보안 업데이트는 진단 허브 표준 수집기 서비스가 파일 작업을 적절하게 가장하도록 하여 취약성을 해결합니다.


Release Notes Icon Visual Studio 2019 버전 16.0.7

릴리스 날짜: 2019년 8월 13일

Visual Studio 2019 버전 16.0.7에서 해결된 문제

보안 권고 알림

CVE-2019-1211 Git for Visual Studio 권한 상승 취약성

구성 파일을 부적절하게 구문 분석할 때 Git for Visual Studio에 권한 상승 취약성이 존재합니다. 취약성을 이용할 줄 아는 공격자는 또 다른 로컬 사용자의 컨텍스트에서 코드를 실행할 수 있습니다. 인증된 공격자는 취약성을 악용하기 위해 애플리케이션 전체를 설치하기 전에 시스템에서 Git 구성 파일을 수정해야 합니다. 그런 다음 공격자는 시스템의 다른 사용자가 특정 Git 명령을 실행하도록 유도해야 합니다. 업데이트에서는 구성 파일을 편집하는 데 필요한 권한을 변경하여 문제를 해결합니다.

**CVE-2019-1301: .NET Core의 서비스 거부 취약성

.NET Core가 웹 요청을 잘못 처리할 경우 서비스 거부 취약성이 존재합니다. 이 취약성을 악용하는 공격자는 .NET Core 웹 애플리케이션에 대한 서비스 거부로 이어질 수 있습니다. 취약성은 인증 없이 원격으로 악용될 수 있습니다.

업데이트는 .NET Core 웹 애플리케이션이 웹 요청을 처리하는 방법을 수정하여 취약성을 해결합니다.


Release Notes Icon Visual Studio 2019 버전 16.0.6

릴리스 날짜: 2019년 7월 9일

Visual Studio 2019 버전 16.0.6에서 해결된 문제

  • Windows 10 버전 1903에서 실행되거나 .NET 4.8이 설치된 시스템에 대한 내레이터 지원이 수정되었습니다.

보안 권고 알림

CVE-2019-1075 ASP.NET Core 스푸팅 취약성

.NET Core 업데이트가 현재 릴리스되어 이 Visual Studio 업데이트에 포함됩니다. 이 릴리스에서는 보안 및 기타 중요한 문제를 해결합니다. 세부 정보는 .NET Core 릴리스 정보에서 확인할 수 있습니다.

CVE-2019-1077 Visual Studio Extension 자동 업데이트 취약성

Visual Studio Extension 자동 업데이트 프로세스가 특정 파일 작업을 잘못 수행하는 경우 권한 상승 취약성이 존재합니다. 이 취약성을 성공적으로 악용한 공격자는 임의의 위치에서 파일을 삭제할 수 있습니다. 이 취약성을 악용하려면 공격자가 취약한 시스템에 대한 권한 없는 액세스 권한이 있어야 합니다. 보안 업데이트는 Visual Studio Extension 자동 업데이트가 파일 작업을 수행하는 위치를 보호하여 취약성을 해결합니다.

CVE-2019-1113 WorkflowDesigner XOML deserialization에서 코드 실행 허용

특정 형식을 참조하는 XOML 파일로 인해 Visual Studio에서 XOML 파일을 열 때 임의 코드가 실행될 수 있습니다. 이제 XOML 파일에서 사용할 수 있는 형식에 대한 제한이 있게 됩니다. 권한이 없는 새 형식 중 하나를 포함하는 XOML 파일을 열면 형식에 권한이 없음을 설명하는 메시지가 표시됩니다.

자세한 내용은 https://support.microsoft.com/help/4512190/remote-code-execution-vulnerability-if-types-are-specified-in-xoml을 참조하세요.


Release Notes Icon Visual Studio 2019 버전 16.0.5

릴리스 날짜: 2019년 6월 11일

Visual Studio 2019 버전 16.0.5에서 해결된 문제

  • 알려진 문제 해결: 디버깅하는 동안 진단 도구 창의 메모리 사용량 도구에서 C++ 네이티브 코드에 대해 생성된 스냅샷 없습니다.
  • Visual Studio 로드에서의 성능 문제가 개선되었습니다.

Release Notes Icon Visual Studio 2019 버전 16.0.4

릴리스 날짜: 2019년 5월 14일

Visual Studio 2019 버전 16.0.4에서 해결된 문제

보안 권고 알림

CVE-2019-0727 진단 허브 표준 수집기 서비스 권한 상승 취약성

진단 허브 표준 수집기 서비스가 특정 파일 작업을 잘못 수행하는 경우 권한 상승 취약성이 존재합니다. 이 취약성을 성공적으로 악용한 공격자는 임의의 위치에서 파일을 삭제할 수 있습니다. 이 취약성을 악용하려면 공격자가 취약한 시스템에 대한 권한 없는 액세스 권한이 있어야 합니다. 보안 업데이트는 진단 허브 표준 수집기가 파일 작업을 수행하는 위치를 보호하여 취약성을 해결합니다.


Release Notes Icon Visual Studio 2019 버전 16.0.3

릴리스 날짜: 2019년 4월 30일

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

  • 이제 Visual Studio Tools for Kubernetes는 최신 Azure Dev Spaces를 지원합니다.

Visual Studio 2019 버전 16.0.3에서 해결된 문제


Release Notes Icon Visual Studio 2019 버전 16.0.2

릴리스 날짜: 2019년 4월 18일

Visual Studio 2019 버전 16.0.2에서 해결된 문제


Release Notes Icon Visual Studio 2019 버전 16.0.1

릴리스 날짜: 2019년 4월 9일

Visual Studio 2019 버전 16.0.1에서 해결된 문제


Release Notes Icon Visual Studio 2019

릴리스 날짜: 2019년 4월 2일

Visual Studio 2019의 새로운 기능 요약

설치

IDE

  • 기본적으로 설치되는 Visual Studio Live Share를 사용하여 다른 사용자와 협력합니다. C++, VB, .NET 및 Razor에 대한 추가 언어 지원은 게스트에게 솔루션 보기 및 소스 제어 diff 공유를 제공합니다.
  • 새로운 시작 창을 통해 최근에 작업한 코드를 열거나 프로젝트 복제, 열기 또는 만들기와 같이 가장 일반적으로 사용되는 흐름 중 하나를 시작합니다.
  • 인기도에 따라 정렬된 새 목록을 사용하는 향상된 검색 환경과 필터를 사용하여 새 프로젝트를 만듭니다.
  • 셸에 대한 일단의 새로운 시각적 변경을 통해 코드에 대한 세로 공간이 더 많아지고 현대화된 모양과 느낌이 갖추어집니다.
  • 모니터 단위 인식 지원이 향상됨에 따라 표시 구성 및/또는 크기 조정에 관계없이 IDE의 더 선명한 버전을 볼 수 있습니다.
  • 메뉴, 명령, 옵션 및 설치 가능한 구성 요소에 대해 Visual Studio의 향상된 검색 기능을 사용합니다.
  • 문서 표시기를 사용하여 코드 파일의 '상태'를 빠르게 파악할 수 있습니다. 표시기에서 한 번 클릭으로 코드 정리를 통해 실행하고 구성합니다.
  • [옵션] 대화 상자의 새로운 [미리 보기 기능] 페이지를 사용하여 옵트인된 미리 보기 기능을 쉽게 관리합니다.
  • 태그 기반 검색의 개선 사항과 쉽게 액세스할 수 있는 "최근 프로젝트 템플릿" 목록을 사용하여 새 프로젝트를 만듭니다.
  • Visual Studio 검색에서 직접 새 항목을 만들고 관련성이 향상된 결과를 더 빨리 찾습니다.
  • 알림 환경을 통해 Visual Studio Live Share 요청과 같은 중요한 정보의 최신 소식을 받습니다.
  • 코드 정리 수정자의 컬렉션을 프로필로 저장하여 코드 정리 중에 실행할 수정자를 쉽게 선택할 수 있습니다.
  • .NET 리팩터링 및 코드 수정을 트리거합니다.
  • 최고 수준의 프로젝트 파일을 사용하여 .NET Core 프로젝트를 보다 쉽게 구성합니다.
  • 확장 및 업데이트 대화 상자에서 미리 보기, 유료 및 평가판 태그를 사용하여 확장의 상태를 확인합니다.
  • 이 미리 보기에서 기본값이 재설정되었기 때문에 활성화할 미리 보기 기능을 확인하고 구성합니다.
  • 이 릴리스에서 사용되지 않는 것으로 표시된 특정 테스트 창 API를 제외하여 확장을 최신 상태로 유지하세요.
  • 시작 창을 통해 로그인 및 탐색하고 Azure DevOps에서 호스트된 리포지토리에 한 번 클릭으로 복제하거나 연결합니다.
  • 다른 소스 제어 호스트에 대한 확장을 설치하여 사용자와 사용자의 조직이 소유한 리포지토리를 확인합니다.
  • 명도를 줄이고, 전체 대비를 개선하고, 다른 유용성 문제를 해결하여 피드백을 다루는 개선된 파란색 테마 환경을 사용해보세요.
  • dotnet 형식 글로벌 도구로 명령줄에서 코드 스타일 기본 설정을 적용합니다.
  • MSBuild 및 Visual Studio는 이제 기본적으로 .NET Framework 4.7.2를 대상으로 합니다.
  • 서버 탐색기에서 Azure App Service 관련 기능을 제거했습니다. 대신 클라우드 탐색기에서 동일한 기능을 사용할 수 있습니다.

성능

일반 디버깅 및 진단

  • 디버그하는 동안 조사식, 자동 및 지역 창 내에서 키워드를 검색하여 개체 또는 값을 찾는 기능을 향상시킵니다.
  • 데이터를 검사할 때 조사식, 자동 및 지역 창에서 형식 지정자의 드롭다운을 봅니다.
  • 이제 .NET Core와 호환되는 사용자 지정 시각화 도구를 사용합니다.
  • 많은 수의 모듈과 PDB가 있는 매우 큰 애플리케이션을 디버그합니다.
  • 사용자 지정 인수를 사용하여 Google Chrome을 시작하고 Visual Studio IDE 내에서 JavaScript 애플리케이션을 모두 디버그합니다.
  • 성능 프로파일러의 CPU 및 DotNet 개체 할당 도구에 대해 실행 부하 과다 경로 강조 표시를 사용합니다.
  • 원래 C++에 독점적이었던 기능인 데이터 중단점을 사용하여 .NET Core 3.0+ 애플리케이션에서 특정 개체의 속성 값이 변경되는 경우 중단됩니다.
  • 미리 보기 1 이후부터 자동, 로컬 및 조사식 창에서 보다 간단해진 인터페이스로 검색할 수 있도록 UI를 업데이트했습니다. 더 깊게 검색 기능이 드롭다운으로 변경되어 초기 및 후속 검색의 깊이를 신속하게 선택할 수 있습니다.

소스 제어 및 팀 탐색기

  • Git stash에 대한 팀 탐색기의 Git 도구 지원을 사용하여 다른 작업을 수행할 수 있도록 변경 내용을 임시로 저장합니다.
  • 끌어오기 요청 검토를 Visual Studio에 통합하는 Visual Studio에 대한 끌어오기 요청을 체크 아웃합니다. 이는 Visual Studio Marketplace에서 사용할 수 있는 선택적 확장 버전입니다.
  • 사용자별 작업 항목 보기, 작업 항목에서 분기 만들기, #mentions가 있는 작업 항목 검색 및 인라인 편집과 같은 개발자 워크플로에 중점을 둔 새로운 Azure DevOps 작업 항목 환경을 사용합니다.

확장성

  • NuGet 패키지 Microsoft.VisualStudio.SDK에서 통합된 단일 Visual Studio SDK를 사용합니다.
  • 이제 VSIX 프로젝트에 대한 업데이트를 활용하여 AsyncPackage를 포함합니다.
  • 새로 추가한 빈 VSIX 프로젝트 템플릿으로 실험해 보세요.
  • 확장 기능이 확장 및 업데이트 대화 상자 내부에 표시된 대로 체험판, 유료 또는 평가판인지 확인합니다.

프로그래밍 언어

C#

이제 다음을 비롯하여 C# 컴파일러가 지원하는 8.0 언어의 미리 보기 기능을 경험해보세요.

  • Null 허용 참조 형식: 기능이 켜져 있는 경우(예: 프로젝트 수준과 함께 #nullable enable<NullableContextOptions>enable</NullableContextOptions>또는 프로젝트 수준에서) 참조 형식은 주석이 추가된 경우 nullable로 ?처리되고, 그렇지 않으면 null을 허용하지 않는 것으로 처리됩니다. 그런 다음, 컴파일러는 null이 흐름을 평가하고 안전하지 않은 사용에 대해 경고하는지를 분석합니다.
  • switch expressions: 식 컨텍스트에서 -like 의미 체계를 제공합니다 switch.
  • 재귀 패턴 일치: 새 패턴을 사용하면 필드/속성 및 위치 요소(튜플 또는 분해)를 테스트할 수 있습니다.
  • 범위에 대한 x..y 리터럴 구문을 비롯하여 조각화를 수행하는 동안 CoreFX에서 사용되는 RangeIndex 형식을 지원합니다.
  • IAsyncEnumerable<T> 로 나타낸 비동기 스트림await foreach를 사용하여 비동기적으로 열거될 수 있고 async IAsyncEnumerable<T> 열거자 메서드를 사용하여 생성될 수 있습니다.
  • using 선언: 중첩 수준을 높이지 않고 현재 블록의 끝에서 삭제합니다. ref 구조체는 공용 Dispose() 메서드를 구현하여 삭제될 수 있습니다.
  • static 로컬 함수: 표시된 static 로컬 함수는 바깥쪽 함수에서 참조 this 하거나 변수를 사용할 수 없습니다.
  • 로컬 함수 및 람다 식은 바깥쪽 함수의 변수 이름을 섀도잉하는 매개 변수 및 로컬을 선언할 수 있습니다.
  • Null 결합 할당: x ??= y;xnull인 경우에만 yx에 할당합니다.

Mads가 작성한 C# 8.0 개요에서 자세히 알아보세요.

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

또한 기본적으로 Visual Studio에서 최신 C# 언어 기능을 사용할 수 있습니다.

C++
  • Visual Studio IntelliCode를 사용하여 C++ 및 XAML 코드를 작성할 때 시간을 절약합니다. 이는 코드에 대한 AI 지원 추천을 제공하는 선택적 확장입니다.
  • 편집기 내 코드 분석 경고를 경험해 보세요. 코드 분석은 백그라운드에서 자동으로 실행되고 경고는 녹색 물결선으로 표시됩니다.
  • Peek Window UI를 사용하고 중첩된 템플릿을 지원하는 새로운 템플릿 표시줄을 사용해 보세요.
  • C++ 수명 프로필 검사기의 업데이트된 새 구현을 실행합니다.
  • CMakeSettings.json에 대한 대안을 제공하는 새로운 CMake 설정 편집기를 사용하여 CMake 프로젝트를 구성합니다.
  • OpenMP SIMD 벡터화, 링크 시간 속도 향상 및 보다 적극적인 인라인을 포함한 백 엔드 개선 호스트를 사용해 보세요.
  • CMakeGUI와 같은 외부 도구 또는 사용자 지정 메타 빌드 시스템에서 생성된 기존 CMake 캐시를 엽니다.
  • Spectre 변형 1(CVE-2017-5753)에 대한 완화 지원을 제공하기 위해 /Qspectre를 사용한 분석을 개선합니다. 자세한 내용은 Visual C++ 팀 블로그 게시물을 참조하세요.
  • 템플릿 IntelliSense에 대한 템플릿 표시줄에 가장 최근에 사용됨 드롭다운이 포함되는 이전 샘플 인수를 빠르게 전환할 수 있습니다.
F#
  • F# 4.6은 다양한 기타 컴파일러 기능 향상과 함께 릴리스됩니다.
  • F# 및 F# 도구에 대한 대규모 솔루션과 다양한 버그 수정을 통한 성능 개선을 경험해 보세요.
  • 오픈 소스 기여자가 작업한 일부 F# 언어 및 도구에 대해 알아봅니다.
JavaScript/TypeScript
Python
  • Python 환경 추가 대화 상자를 사용하여 Python 가상 및 conda 환경을 쉽게 추가합니다.
  • 새 Python 환경 선택기 도구 모음을 사용하는 폴더 열기 작업 영역에 대한 향상된 지원을 비롯하여 Python 환경에서 더 쉽게 작업할 수 있습니다.
  • Visual Studio Live Share 세션을 만들고 다른 Visual Studio 사용자와 Python 코드에서 공동 작업을 수행합니다.

웹 기술

컨테이너 도구

Xamarin을 사용한 모바일 개발

UWP(유니버설 Windows 플랫폼)

  • 디자이너에서 편집할 때 주석, 간격, 네임스페이스 및 기타 텍스트 변경 내용을 유지할 수 있습니다. 패키지 매니페스트 디자이너는 이제 Package.appxmanifest 파일의 xml 변경 내용에 엄격한 충실도를 유지 관리합니다.
  • .NET Core 프로젝트에서 Windows 애플리케이션 패키징 프로젝트를 사용하여 MSIX 패키지를 생성할 수 있습니다.
  • 직접 Microsoft Store 제출을 위해 패키지 만들기 마법사를 사용할 수 있습니다.
  • Visual Studio 2019에서는 Windows Mobile 디바이스로의 배포가 더 이상 지원되지 않습니다. Windows 10 Mobile 디바이스에 배포하려고 하면 "Visual Studio 2019에서 Windows Mobile 디바이스로의 배포가 지원되지 않습니다"라는 오류가 발생합니다. Windows 10 Mobile 디바이스용 애플리케이션에서 계속 작업해야 하는 경우 Visual Studio 2017을 계속 사용하세요.

XAML 디버깅 도구:

  • XAML 편집 & 계속은 이제 UWP(x:bind)를 지원합니다. XAML 편집 & 계속은 이제 공용 속성, 요소 이름, 인덱싱된 속성 경로(컬렉션), 연결된 속성 및 캐스트 속성이 포함된 경로에 대해 x:bind로 만든 데이터 바인딩 편집을 지원합니다. 다른 변경 사항은 지원되지 않습니다. 이 향상된 기능은 최소 및 최대 버전이 Windows 10 SDK 버전 1809(빌드 10.0.17763) 이상을 대상으로 하는 모든 앱에서 사용할 수 있습니다. (참고: XAML 편집 및 계속은 이제 로 알려져 있습니다.XAML 핫 다시 로드 Visual Studio 2019 업데이트 2 이상부터 시작).

SQL Server Data Tools

  • 이제 UTF-8 데이터 정렬 지원을 포함하는 업데이트된 SSDT 및 DacFX를 경험해보세요.

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

설치

  • 이제 Visual Studio 업데이트를 설치하는 방법을 선택할 수 있습니다. 기본 모드는 업데이트를 다운로드하는 동안 Visual Studio를 계속 사용할 수 있는 '모두 다운로드한 후 설치'입니다. "모두 다운로드한 후 설치"를 선택하면 Visual Studio 설치 관리자를 열고 계속을 선택하여 설치를 완료해야 합니다.
  • 이제 Visual Studio 업데이트가 백그라운드에서 다운로드됩니다. 이러한 다운로드는 머신이 유휴 상태일 때만 발생합니다. 다운로드가 완료되면 Visual Studio 내에서 설치할 다운로드가 이제 준비가 되었다는 알림을 받게 됩니다.
  • 이제 제품 업데이트 페이지에서 설정을 변경하여 도구 > 옵션 메뉴를 통해 업데이트 설치 모드 및 업데이트 다운로드 여부를 제어할 수 있습니다.
Product Update Options
*제품 업데이트 옵션*

시작 창

새로운 시작 창은 간소화된 시작 환경을 제공하여 Visual Studio를 시작할 때 코드를 빠르게 얻을 수 있도록 합니다.

  • 최근 프로젝트 및 폴더를 보고 한 번의 클릭으로 엽니다. 팝업 메뉴를 통해 목록의 항목을 고정하거나 제거합니다.
  • 공용 또는 비공개 Git URL을 사용하여 코드를 복제하거나 체크 아웃하면 IDE에서 폴더가 자동으로 열립니다.
  • Azure DevOps의 호스티드 리포지토리에 로그인, 찾아보기 및 원클릭 복제 또는 연결하거나 사용자 및 다른 소스 제어 호스트에 대한 확장을 설치하여 조직에 의해 소유된 리포지토리를 봅니다.
  • 프로젝트, 솔루션 또는 코드가 포함된 폴더에 대한 로컬 디스크 또는 네트워크 공유를 찾아 IDE에서 엽니다.
  • 새 프로젝트 또는 솔루션을 시작하는 데 도움이 되는 코드 스캐폴딩을 제공하는 프로젝트 템플릿을 선택합니다.
  • 사용 가능한 언어, 플랫폼 및 프로젝트 형식을 통해 제목, 설명 및 태그 또는 필터로 프로젝트 템플릿을 검색합니다. 기본 목록에는 사용 가능한 모든 템플릿이 표시되며, 빠른 액세스를 위해 최근에 사용한 10개의 프로젝트 템플릿 목록이 왼쪽 창에 나타납니다. 두 페이지 마법사를 사용하면 한 번에 하나의 결정에만 집중할 수 있게 해줍니다.
Start window
*새로운 시작 창 환경*

셸 및 플랫폼

  • 새로 향상된 제품 아이콘을 통해 열어서 사용하고 있는 Visual Studio의 버전을 빠르게 파악합니다. 새 아이콘은 다양한 배경에서도 더 잘 보입니다.
  • 접근성 표준을 충족하면서도 더 깔끔한 사용자 인터페이스를 제공하는 새로워진 파란색 테마를 통해 Visual Studio의 현대화된 모양과 느낌을 경험할 수 있습니다.
  • 간결함을 목표로 하고 IDE에서 세로 공간을 회수하는 변경을 통해 코드를 자세히 확인합니다. 또한 기존 기능을 유지하면서 제목 표시줄과 메뉴 모음을 결합했습니다.
  • 새로운 실험적 설정을 통해 Visual Studio를 모니터 단위 인식 애플리케이션으로 사용합니다. 이 설정을 사용하면 표시 구성 및/또는 크기 조정에 관계없이 셸 및 편집기와 같은 Visual Studio의 일부를 더 선명하게 렌더링할 수 있습니다.
  • 메뉴, 명령, 옵션 및 설치 가능한 구성 요소에서 향상된 검색 환경을 경험할 수 있습니다. 새로운 검색 기능은 이제 동적으로 결과를 표시하고, 맞춤법 오류를 처리하며, 검색 결과 내의 관련 정보(예: 바로 가기 키)를 제공합니다.
Visual Studio Search with results
*Visual Studio에서 향상된 검색*
  • 문서 상태 표시기 기능을 통해 현재 열려 있는 파일과 관련된 상태 정보를 확인합니다.
Document Health Indicator with issues
*문서 상태 표시기 - 문서에 문제 발생*
Document Health Indicator with no issues
*문서 상태 표시기 - 문제 없음*
  • C# 개발자인 경우 코드 정리를 사용하여 가장 일반적인 코딩 제안 중 일부를 빠르게 정리할 수 있습니다.
  • 코드 정리를 구성하여 실행하려는 수정 도구 세트를 선택합니다.
Code Cleanup configuration dialog
*코드 정리 구성*
  • 클립보드 링(Ctrl + Shift + V)을 확장하는 상황에 맞는 메뉴를 통해 클립보드 기록의 내용을 확인합니다.
Clipboard Ring context menu
*클립보드 링 상황에 맞는 메뉴*
  • 다음을 통해 검색 환경을 개선했습니다.
    • 메뉴, 구성 요소 및 템플릿에 대한 필터 추가
    • 검색 선택 영역을 통합하여 가장 적절한 검색 결과 제공
    • Visual Studio 검색에서 직접 솔루션에 새 프로젝트/항목 추가 가능
  • 향상된 PMA(모니터별 인식) 환경은 이제 최소 요구 사항 집합(.NET 4.8 미리 보기 및 Windows 10 2018년 4월 업데이트 이상)을 충족하는 사용자를 위해 기본적으로 설정됩니다. 도구 상자, 중단점, 조사식, 로컬, 자동 및 호출 스택과 같은 도구 창은 PMA로 변환되어 디스플레이 구성 및/또는 크기 조정에 관계없이 급격하게 렌더링됩니다.
  • 새 알림 환경은 다음을 추가합니다.
    • 상태 표시줄에 대한 새 아이콘 및 카운터 환경
    • 새 알림 메시지 메커니즘
    • Visual Studio 업데이트 및 Visual Studio 라이선스 만료 알림
  • 명도를 줄이고, 대비를 개선하고, 다른 유용성 문제를 해결하여 피드백을 다루는 수정된 파란색 테마 환경입니다.
  • 도구 모음 영역에서 사용 가능한 공간을 끌어오기 가능한 영역으로 활용하여 창 끌기 기능을 향상시킵니다.
  • 이제 코드 정리 수정자의 컬렉션을 프로필로 저장하여 코드 정리 중에 실행할 수정자 집합을 빠르게 선택할 수 있습니다.
Visual Studio Code Cleanup Profiles
*Visual Studio Code 정리 프로필*
  • 확장 및 업데이트 대화 상자에 태그를 추가하여 확장이 미리 보기인지, 유료 확장인지 또는 평가판 기간인지를 신속하게 파악합니다.
Extensions and Updates dialogs with tags
*태그가 포함된 확장 및 업데이트 대화 상자*
  • Visual Studio 2019 이상에서 데이터 도구 설명을 구현하는 데 추천되는 방법은 IAsyncQuickInfoSourceProvider입니다. 레거시 편집기 요약 정보 API인 IVsTextTipDataTextTipData는 Visual Studio 2019 미리 보기 1에서 사용되지 않습니다.
  • 편집기 스마트 태그(Microsoft.VisualStudio.Language.Intellisense 네임스페이스의 ISmartTag* 인터페이스 패밀리)는 LightBulb API를 위해 사용되지 않으며, Visual Studio 2019 미리 보기 1부터 더 이상 지원되지 않습니다.
  • 고급 빌드 구성 표시, 솔루션 항상 표시만들어질 때 새 프로젝트 저장 솔루션 옵션은 적은 사용으로 인해 제거되었습니다. 이러한 값은 기본값인 True로 설정되어 있습니다.
  • 도구 > 옵션 > 환경 > 미리 보기 기능에 있는 새 미리 보기 기능 페이지를 사용하여 특정 미리 보기 기능을 옵트인하거나 옵트아웃합니다.

성능

  • 폴더 및 솔루션에 대한 빌드 선택의 새 바로 가기를 추가했습니다. Ctrl+ B.
  • 모든 프로젝트를 언로드한 상태로 솔루션을 로드하여 대규모 솔루션을 신속하게 엽니다. Do not load projects
  • 솔루션 필터 파일을 사용하여 열려 있는 솔루션에 로드할 프로젝트를 선택합니다.
    • 자동으로 열지 않으려는 프로젝트를 언로드하고, 마우스 오른쪽 단추로 솔루션을 클릭하고, 솔루션 필터로 저장을 선택하여 솔루션 필터 파일을 만듭니다. 그러면 이 필터 파일을 사용하여 나중에 사용할 솔루션을 열 수 있습니다. Solution filters
  • CMake 파일 용 빌드 모두: Ctrl + Shift + B 명령을 추가했습니다.
  • CMake 프로젝트의 C++ 파일에서 IntelliSense 성능을 개선했습니다.
  • 언로드된 프로젝트 종속성을 프로젝트 및 솔루션 컨텍스트 메뉴에 로드하는 명령을 추가했습니다.
  • 이제 Visual Studio의 성능 향상을 위한 알림 팁이 성능 센터에 유지되며 도움말 > Visual Studio 성능 관리를 통해 액세스할 수 있습니다.
  • 이제 작업 상태 센터에서 솔루션 로드 진행률과 솔루션 로드 완료 시 경고를 확인할 수 있습니다.
  • 솔루션 필터 파일을 사용하여 열려 있는 솔루션에 로드할 프로젝트를 선택합니다.
    • 자동으로 열지 않으려는 프로젝트를 언로드하고, 마우스 오른쪽 단추로 솔루션을 클릭하고, 솔루션 필터로 저장을 선택하여 솔루션 필터 파일을 만듭니다. 그러면 이 필터 파일을 사용하여 나중에 사용할 솔루션을 열 수 있습니다.
  • [폴더 열기] 시나리오에서 Ctrl+T를 누르면 향상된 빌드 자산 검색 및 파일 검색을 경험할 수 있습니다.
  • 이제 Visual Studio 편집기에서 입력 성능에 대한 보조 구성 요소의 영향을 제한하므로 성능이 향상되었습니다. 특히 입력할 때 장기간 실행하고 불필요한 작업은 자동으로 취소합니다.
  • Visual Studio 보조 구성 요소에 대한 제한 동작은 도구 > 옵션 > 텍스트 편집기 > 고급을 통해 구성할 수 있습니다.
Visual Studio Typing Latency Options
*Visual Studio 입력 대기 시간 옵션*
  • 이제 솔루션 탐색기 도구 창의 이전 세션에서 프로젝트 계층 구조 상태 복원을 사용하지 않도록 설정할 수 있습니다. 솔루션이 열려 있는 이전 세션에서 프로젝트 계층 구조를 복원하면 솔루션 로드가 지연될 수 있어 이 변경이 구현되었습니다.
    • 도구 > 옵션 > 프로젝트 및 솔루션 > 일반에서 이 옵션을 토글합니다.
Solution load restore settings
*솔루션 로드 복원 설정*
* 이제 이전 세션에서 도구 창의 상태 복원을 사용하지 않도록 설정하고 시작 시 항상 솔루션 탐색기와 팀 탐색기를 로드할 수 있습니다. 이전 세션에서 도구 창을 복원하면 시작 시 솔루션 로드가 지연될 수 있어 이 변경이 구현되었습니다. * **도구 > 옵션 > 환경 > 시작**에서 이 옵션을 토글합니다.

일반 디버깅 및 진단

일반 디버깅
  • 조사식, 자동 및 지역 창에 통합된 새로운 검색 기능을 사용하여 키워드를 강조 표시, 검색 및 이동합니다.
Searching for keywords in Watch
조사식 창에서 검색
  • 나열된 항목에 쉼표를 추가하여 조사식, 자동 및 지역 창에서 데이터의 서식을 지정하는 지정자 및 옵션의 드롭다운을 봅니다.
Format Specifier Dropdown List in Watch
조사식 창에서 형식 지정자 드롭다운
  • 이제 .NET Core에 대한 사용자 지정 및 DataSet 시각화 도우미 지원을 사용할 수 있습니다.
DataSet Visualizer for .NET Core
.NET Core 애플리케이션에 대한 DataSet 시각화 도우미
  • Windows에서 실행되는 C++ 애플리케이션의 경우 PDB는 이제 별도의 64비트 프로세스로 로드됩니다. 이 변경은 많은 수의 모듈과 PDB가 포함된 애플리케이션을 디버그할 때 메모리가 부족한 디버거 실행으로 인해 발생하는 다양한 충돌을 해결합니다.
관리되는 데이터 중단점

원래 C++에 독점적이었던 기능인 데이터 중단점을 사용하여 .NET Core(3.0 이상) 애플리케이션에서 특정 개체의 속성 값이 변경되는 경우 중단할 수 있습니다. 데이터 중단점이 범위를 벗어난 경우에도 특정 개체의 속성에 집중할 수 있는 반면, 해당 함수를 호출하는 수백 개의 개체가 있는 경우 이전 옵션은 일정하고 관련이 없는 중단을 초래할 수 있기 때문에 단순히 속성의 setter에 중단점을 배치하는 것이 좋습니다.

Data breakpoints for .NET Core
.NET Core 애플리케이션에서 데이터 중단점
조사식 창 검색 UX 업데이트

자동, 로컬 및 조사식 창에서 보다 간단해진 인터페이스로 검색할 수 있도록 UI를 업데이트했습니다. 더 깊게 검색 기능이 드롭다운으로 변경되어 초기 및 후속 검색의 깊이를 신속하게 선택할 수 있습니다.

코드 스타일 기본 설정 적용
  • dotnet 형식 글로벌 도구로 명령줄에서 코드 스타일 기본 설정을 적용할 수 있습니다. 설치하려면 .NET Core 2.1 SDK 이상이 필요합니다. 좋아하는 터미널에서 다음 명령을 실행합니다. dotnet tool install -g dotnet-format --version 3.0.0-beta4-19105-10
dotnet format video
명령줄에서 dotnet 형식을 실행합니다.

확장성

  • V1 vsixmanifest 확장 형식으로 빌드된 확장은 Visual Studio 2019에서 더 이상 설치할 수 없습니다. V1은 Visual Studio 2010에서 도입되었으며, Visual Studio에서 안정성 문제가 발생할 수 있으므로 Visual Studio 2017에서 더 이상 사용되지 않았습니다. Visual Studio 2019에서는 V1에 대한 지원이 완전히 제거되었습니다. Visual Studio 2019를 대상으로 하는 확장은 vsixmanifest 형식의 V2 또는 V3으로 다시 빌드해야 합니다.
  • 이제 확장이 동기적으로 자동 로드되면 알림 메시지가 표시됩니다. 참고로, 이 릴리스에서는 확장이 정상적으로 로드되고 작동하지만, 다음 Visual Studio 2019 업데이트에서는 작동하지 않을 수 있습니다. 자세한 내용은 확장에 대한 자동 로드 동작을 업데이트하여 중요한 시나리오의 응답성을 향상시키는 방법에 대한 블로그 게시물에서 확인할 수 있습니다.
통합 SDK NuGet 패키지

이전에는 확장 프로그램 작성자가 확장 프로그램에서 사용해야 하는 Visual Studio SDK의 개별 NuGet 패키지에 대한 수많은 별도의 참조를 만들어야 했습니다. 다양한 패키지의 버전이 항상 정렬되지는 않았으므로 런타임 문제뿐만 아니라 컴파일 시에도 종종 종속성 충돌이 발생했습니다.

이러한 문제를 해결하려면 Visual Studio SDK를 구성하는 모든 패키지에 대한 종속성을 포함하는 Microsoft.VisualStudio.SDK라는 새 패키지를 사용합니다. 이렇게 하면 버전 불일치 문제를 해결하고 사용할 버전을 쉽게 알 수 있습니다. 확장 프로그램이 지원하는 가장 낮은 버전의 Visual Studio에 해당하는 패키지 버전을 사용하면 전체 SDK에 액세스할 수 있습니다.

당장은 SDK 패키지 버전 15.9만 존재하지만, 몇 개월 안에 버전 14.0까지 더 많은 버전이 릴리스될 예정입니다.

새로 업데이트된 프로젝트 템플릿

VSIX 프로젝트 템플릿은 여러 업데이트를 거치면서 더 많은 기능을 더 간편하게 사용할 수 있게 되었습니다.

  • 새로운 통합 SDK NuGet 패키지 사용
  • AsyncPackage 클래스 포함
  • 패키지를 컴파일하는 데 더 이상 .resx 파일이 필요하지 않습니다.
  • 대상 .NET Framework 4.7.2

새로운 빈 VSIX 프로젝트 템플릿이 만들어졌으며 VSIX 프로젝트 템플릿과 동일하지만 AsyncPackage 클래스는 없습니다. 또한 통합 SDK NuGet 패키지를 참조하여 MEF 확장 및 기타 패키지 없는 확장 유형을 위한 좋은 출발점을 제공합니다.

체험판/유료/평가판

확장 프로그램이 체험판, 유료 또는 평가판으로 표시되었는지 확인하는 쉬운 방법이 없었습니다. 이제 확장 및 업데이트 대화 상자 내에 각 확장 프로그램이 평가판인지, 유료인지 명확하게 표시되도록 변경되었습니다. 평가판/유료 레이블이 없는 확장 프로그램은 체험판입니다.

테스트 도구

이전에 문서화되지 않았지만 공용으로 표시된 테스트 창의 추가 API가 사용 중단 목록에 추가되었습니다.

소스 제어

  • 팀 탐색기의 Git 도구에서 Git stash를 지원하므로 다른 작업을 수행할 수 있도록 변경 내용을 임시로 저장합니다.
  • 완전히 새로운 Visual Studio 2019의 끌어오기 요청 환경을 사용하여 IDE를 떠나지 않고 Azure Repos에서 끌어오기 요청을 검토, 실행 및 디버그합니다. 시작하려면 Visual Studio Marketplace에서 Visual Studio에 대한 끌어오기 요청 확장을 다운로드합니다.
New Pull Request Experience
새로운 끌어오기 요청 환경

MSBuild

  • MSBuild 도구 세트 버전이 15.0에서 Current로 변경되었습니다. MSBuild.exe는 이제 %VSINSTALLDIR%\MSBuild\Current\Bin\MSBuild.exe에 있습니다.
  • MSBuild(및 Visual Studio)는 이제 .NET Framework 4.7.2를 대상으로 합니다. 새로운 MSBuild API 기능을 사용하려면 어셈블리도 업그레이드해야 하지만 기존 코드는 계속 작동합니다.

C#

Visual Studio 2019 이전의 모든 릴리스의 경우 기본 C# 언어 버전은 최신 주 버전에 해당했습니다. Visual Studio 2017에서 C#은 7.1, 7.2 및 7.3의 세 가지 부 버전을 발전시키고 릴리스했습니다. 그러나 새 프로젝트는 여전히 C# 7.0을 기본값으로 지정했습니다. 따라서 새로운 기능을 사용하려는 C# 개발자의 경우 실망스럽겠지만 새 프로젝트의 언어 버전을 수동으로 변경해야 합니다.

이 문제를 해결하기 위해 기본 C# 언어 버전은 대상 프레임워크에 의해 결정됩니다.

  • .NET Core 3.0 미리 보기를 대상으로 하는 경우 C# 언어 버전은 C# 8.0 미리 보기입니다.
  • .NET Framework 또는 미리 보기가 아닌 .NET Core를 대상으로 하는 경우 C# 언어 버전은 C# 7.3입니다.

그러면 기본적으로 안정적인 최신 C# 언어 기능을 사용할 수 있습니다. .NET Core 미리 보기를 사용하면 .NET Core 3.0 미리 보기와 일치하는 C# 8.0 미리 보기 언어 기능을 사용할 수 있습니다.

프로젝트 또는 props 파일에서 LangVersion을 통해 언어 버전을 지정하는 경우 해당 언어 버전이 앞에서 설명한 기본값을 재정의합니다.

C++

  • 이제 Visual Studio Live Share에서 C++를 지원하므로 실시간으로 공동 작업을 수행합니다.
  • 광범위한 학습 및 코드 컨텍스트를 사용하는 선택적 확장인 IntelliCode를 사용하여 사용할 가능성이 가장 높은 항목을 완성 목록의 맨 위에 배치함으로써 시간을 절약합니다. C++의 경우 IntelliCode는 STL과 같은 인기 있는 라이브러리를 사용할 때 가장 큰 도움을 줍니다.
  • 업데이트된 새 프로젝트 대화 상자에 맞게 몇 개의 프로젝트 템플릿 이름과 설명이 수정되었습니다.
  • Clang/C2 실험적 구성 요소가 제거되었습니다. C++ 표준을 완전하게 준수할 수 있도록 /permissive- 및/또는 /std:c++17 또는 Windows용 Clang/LLVM 도구 체인이 포함된 MSVC 도구 세트를 사용합니다. 자세한 내용은 Visual C++ 팀 블로그를 참조하세요.
  • C++ 컴파일러의 /Gm 스위치는 사용되지 않습니다. 명시적으로 정의된 경우 빌드 스크립트에서 /Gm 스위치를 사용하지 않도록 설정하는 것이 좋습니다. 또는 "경고를 오류로 처리"(/WX)를 사용하는 경우 오류로 처리되지 않으므로 /Gm에 대한 사용 중단 경고를 안전하게 무시할 수도 있습니다.
  • C++ Android 환경은 이제 기본적으로 Android SDK 25와 Android NDK 16b로 설정됩니다.
생산성
  • 이제 코드 분석이 백그라운드에서 자동으로 실행됩니다. 입력하는 동안 경고가 녹색 물결선으로 표시됩니다.
  • 이제 템플릿 모음은 모달 창 대신 Peek Window UI를 활용하고 중첩된 템플릿을 지원하며 모든 기본 인수를 Peek Window에 미리 채웁니다.
  • NULL->nullptr 코드 분석 경고(C26477 USE_NULLPTR_NOT_CONSTANT)에 대한 fix-it은 C++ Core 검사 형식 규칙 집합에서 기본적으로 활성화된 관련 줄의 전구 메뉴를 통해 사용할 수 있습니다. IDE의 추가 빠른 수정에는 #include 지시문 추가, 누락된 세미콜론 수정, '*' 대 '&'의 잘못된 사용 수정 등이 포함됩니다.
  • C++ 콘솔 및 데스크톱 앱의 경우 미리 컴파일된 헤더가 더 이상 생성되지 않습니다.
  • 이제 정의로 이동이 #include 지시문에서 작동하여 해당 파일을 엽니다. 여기에는 F12 바로 가기가 포함되어 있어 코드를 탐색하는 쉬운 방법을 제공합니다.
  • 코드 블록의 닫는 중괄호 위로 마우스를 가져가면 해당 블록의 컨텍스트에 대한 몇 가지 유용한 정보가 제공됩니다.
  • <뮤텍스> 헤더에서 잘 알려진 STL 형식에 대한 ConcurrencyChecker에서 지원을 추가했습니다.
  • 매달려 있는 포인터 및 참조를 검색하기 위해 수명 프로필 검사기의 업데이트된 부분 구현을 사용할 수 있습니다.
  • 세 방향 비교를 위해 C++ 20 연산자<=>(“우주선”)에 대한 컴파일러에 초기 지원을 추가했습니다.
CMake
  • CMake 프로젝트에서 C++용 IntelliSense 파일의 성능을 개선했습니다.
  • Visual Studio는 Linux 머신에 호환되는 CMake 버전이 있는지 검색하여 Linux에서 CMake를 사용하여 C++ 개발을 부트스트랩하도록 도와줍니다. 그렇지 않은 경우 설치를 제공합니다.
  • CMake 설정 편집기는 CMakeSettings.json에 대한 대안을 제공하고 CMakeGUI와 일부 패리티를 제공합니다.
  • CMake 메뉴는 프로젝트와 솔루션과의 긴밀한 패리티를 위해 제거 및 재구성되었습니다.
  • 일치하지 않는 아키텍처 또는 호환되지 않는 CMake 생성기 설정과 같은 CMakeSettings의 호환되지 않는 설정은 JSON 편집기의 물견선과 오류 목록의 오류를 표시합니다.
  • vcpkg integrate install이 실행된 후 IDE에서 열리는 CMake 프로젝트에 대해 vcpkg 도구 체인이 자동으로 검색되고 활성화됩니다. 이 동작은 CMakeSettings에서 빈 도구 체인 파일을 지정하여 해제할 수 있습니다.
  • 이제 CMake 프로젝트는 기본적으로 내 코드만 디버깅을 활성화합니다.
  • 이제 정적 분석 경고는 백그라운드에서 처리되어 CMake 프로젝트에 대한 편집기에 표시될 수 있습니다.
  • 명확하게 빌드를 추가하고, CMake 프로젝트에 대한 '시작' 및 '종료' 메시지를 구성하고, Visual Studio의 빌드 진행 UI를 지원합니다. 또한 이제 출력 창에서 CMake 빌드 및 구성 메시지의 세부 수준을 사용자 지정하는 도구 > 옵션의 CMake 세부 정보 설정이 있습니다.
  • 이제 'cmakeToolchain' 설정이 CMakeSettings에서 지원되어 CMake 명령줄을 수동으로 수정하지 않고도 도구 체인을 지정할 수 있습니다.
백 엔드
  • 파일 I/O에 대한 링커의 처리와 PDB 형식 병합 및 생성 시 링크 시간을 포함하여 빌드 처리량 개선을 구현했습니다.
  • OpenMP SIMD 벡터화에 대한 기본 지원을 추가했습니다. 이는 새 CL 스위치 -openmp:experimental를 사용하여 활성화할 수 있습니다. 이렇게 하면 "#pragma omp simd"로 주석을 단 루프가 잠재적으로 벡터화될 수 있습니다. 벡터화는 보장되지 않으며 주석이 있지만 벡터화되지 않은 루프에는 보고된 경고가 표시됩니다. SIMD 절이 지원되지 않으면 단순히 무시되고 경고가 보고됩니다.
  • -Ob2의 적극적인 버전인 새로운 인라인 명령줄 스위치 -Ob3을 추가했습니다. -O2(속도에 대한 이진 최적화)는 여전히 기본적으로 -Ob2를 의미하며, 컴파일러가 인라인 처리 중인 경우 -O2 -Ob3을 전달하는 것이 좋습니다.
  • 수학 라이브러리 함수 및 정수 나누기와 같은 특정 다른 작업에 대한 호출을 포함하는 루프의 수동 벡터화를 지원하기 위해 128비트, 256비트 또는 512비트 벡터를 계산하는 SVML(Short Vector Math Library) 내장 함수에 대한 지원을 추가했습니다. 지원되는 기능에 대한 정의는 Intel Intrinsic 가이드를 참조하세요.
  • 새로운 최적화 및 향상된 최적화:
    • 부동 소수점 및 정수 양식 모두에 대해 SIMD(vector) 내장 함수를 사용하는 식에 대한 상수 폴딩 및 산술 단순화
    • 제어 흐름(if/else/switch 문)에서 정보를 추출하여 항상 true 또는 false인 것으로 입증되는 분기를 제거하기 위한 강력한 분석
    • SSE2 벡터 지침을 사용하도록 향상된 memset 언롤링
    • 특히 값으로 전달되는 C++ 프로그램의 경우 쓸모 없는 구조체/클래스 복사본 제거 개선
    • std::copy 또는 std::vector 및 std::string 구조와 같은 memmove를 사용하여 코드 최적화 개선
결함
  • 관리되는 C++ 테스트 프로젝트 템플릿을 더 이상 사용할 수 없습니다. 기존 프로젝트에서 관리되는 C++ 테스트 프레임워크를 계속 사용할 수 있지만 새 단위 테스트의 경우, Visual Studio에서 템플릿(MSTest, Google Test) 또는 관리되는 C# 테스트 프로젝트 템플릿을 제공하는 기본 프레임워크 중 하나를 사용하는 것이 좋습니다.
  • Windows 8.1 SDK는 Visual Studio 설치 관리자에서 더 이상 사용할 수 없습니다. C++ 프로젝트를 최신 Windows 10 SDK로 업그레이드하세요. 8.1에 대한 종속성이 높은 경우 Windows SDK 아카이브에서 다운로드할 수 있습니다.
  • Windows XP 대상은 최신 C++ 도구 세트에서 더 이상 사용할 수 없습니다. VS 2017 수준 MSVC 컴파일러 및 라이브러리가 있는 XP 대상은 여전히 지원되며 "개별 구성 요소"를 통해 설치할 수 있습니다.
  • 설명서에서는 Visual C++ 런타임 배포를 위한 병합 모듈의 사용을 적극적으로 권장하지 않습니다. MSM이 사용되지 않는 것으로 표시하는 이번 릴리스의 추가 단계를 진행하고 있습니다. VCRuntime 중앙 배포를 MSM에서 재배포 가능 패키지로 마이그레이션하는 것이 좋습니다.
  • 더 이상 사용할 수 없는 C++ ATL/MFC 마법사: ATL COM+ 1.0 구성 요소 마법사, ATL 활성 서버 페이지 구성 요소 마법사, ATL OLE DB 공급자 마법사, ATL 속성 페이지 마법사, ATL OLE DB 소비자 마법사, MFC ODBC 소비자, ActiveX 컨트롤의 MFC 클래스 및 Type Lib의 MFC 클래스. 이러한 기술에 대한 샘플 코드는 VCSamples GitHub 리포지토리에 보관됩니다.

F#

Visual Studio 2019의 F# 개선 사항은 세 가지 주요 영역에 걸쳐 있습니다.

  • F# 4.6
  • 중간 및 대규모 솔루션에 대한 주요 성능 개선 사항
  • 뛰어난 오픈 소스 커뮤니티에 의한 여러 오픈 소스 작업
F# 4.6

이 릴리스에는 F# 4.6 언어가 포함되어 있습니다.

F# 컴파일러 및 FSharp.Core 개선 사항

F# 컴파일러 및 FSharp.Core에는 특히 오픈 소스 기여자와 같은 다양한 개선 사항이 제공됩니다.

  • fsi.exefsc.exe는 이제 .NET Framework 4.7.2로 기본 설정되어 이 프레임워크 이하( # 4946 )를 대상으로 하는 구성 요소를 로드할 수 있습니다.
  • 클래스 및 클래스 기반 레코드에 대한 메서드뿐만 아니라 수행할 구조체 및 구조체 레코드에 대한 메서드도 최적화되었습니다(#3057).
  • F# 코드에서 결합된 부울 논리에 대해 내보내는 IL이 최적화되었습니다(#635).
  • F#에 문자열이 있는 +의 사용을 최적화하여 가능한 최소한 String.Concat를 호출합니다(#5560).
  • FSharp.Core 패키지에서 테스트 자산이 있는 일부 추가 디렉터리가 포함된 문제를 수정했습니다. FSharp.Core 4.5.5 및 4.6.1은 이 수정 사항(#5814)을 포함해야 합니다.
  • 사용자 정의 특성이 Attribute 클래스에서 상속되지 않으면 이제 경고를 받게 됩니다(작성자: Vasily Kirichenko).
  • 프로젝트 파일의 AssemblyInformationVersionAttribute 값은 이제 SourceLink와 같은 시나리오를 지원하기 위해 임의의 값을 지원합니다(#4822).
  • 활성 패턴이 있는 잘못된 구문으로 인해 내부 컴파일러 오류가 발생하는 버그가 Steffen Forkmann에 의해 수정되었습니다(#5745).
  • Module 접미사가 재귀 모듈의 모듈에 잘못 추가되어 유일한 차이가 제네릭 매개 변수인 형식과 일치하는 버그가 BooksBaum에 의해 수정되었습니다(#5794).
  • 형식 매개 변수가 형식 이름 옆에 없을 때의 오류 메시지에 대한 개선이 Alan Ball에 의해 이루어졌습니다(#4183).
  • uint16 리터럴 접미사가 Teo Tsirpanis에 의해 잘못된 숫자 리터럴에 대한 오류 메시지에 올바르게 나열되었습니다(#5712).
  • 계산 식에 대한 오류 메시지는 John Wostenberg에 의해 더 이상 메시지에서 async를 명시하지 않고 "계산 식"을 대신 참조합니다(#5343).
  • F# 대화형에서 .dll을 잘못 참조하는 경우 오류 메시지가 Bartoz Sypytkowski에 의해 수정되었습니다(#5416).
  • 정적으로 확인된 형식 매개 변수가 상속된 멤버를 숨기는 멤버를 호출할 수 없는 버그가 Victor Peter Rouven Müller(#5531)에 의해 해결되었습니다.
  • 컴파일러에 대한 다양한 소규모 성능 개선 사항이 Steffen ForkmannRobert Jeppesen에 의해 추가되었습니다.
F#성능 개선 사항

Visual Studio 2019에서 F#의 다른 주요 영역은 중간 및 대규모 솔루션에 대한 성능입니다. 몇 가지 장기 문제를 해결했습니다. 일부는 Visual Studio용 F# 도구의 첫 번째 버전까지 거슬러 올라갑니다. 또한 뛰어난 F# 오픈 소스 커뮤니티로부터 도움을 받았습니다.

  • F# 언어 서비스가 Roslyn에 의해 초기화되는 방법을 개선했습니다. 큰 솔루션의 경우 유형 색 지정은 일반적으로 더 빨리 나타납니다.
  • 특히 큰 파일(#5935, #5936, #5937, #4881)에서 시간에 따른 대규모 할당을 피하기 위해 원본 텍스트 표현을 변경했습니다.
  • 메모리를 적게 사용하도록 파일을 약간 편집하기 위해 빌드 캐시를 변경했습니다(#6028).
  • 이러한 주문형 제안만 컴퓨팅하기 위해 인식할 수 없는 토큰을 입력할 때 이름을 제안하므로 대규모 솔루션에서 입력이 느려져서 CPU 및 메모리가 상당히 감소하는 컴파일러 기능을 수정했습니다(#6044).
  • 기본적으로 아직 열지 않은 네임스페이스의 기호를 더 이상 표시하지 않도록 IntelliSense를 변경했습니다. 그러면 많은 참조를 사용하는 프로젝트에서 IntelliSense 성능을 상당히 향상시킵니다. 이 기능은 설정에서 도구 > 옵션 > 텍스트 편집기 > F# > IntelliSense를 통해 다시 켤 수 있습니다.
  • 형식 공급자를 사용하여 완성 목록에서 제공된 형식을 대량으로 생성하는 경우 메모리 사용이 향상되었습니다(#5599).
  • 인식할 수 없는 이름을 제안하기 위해 내부 문자열 비교 알고리즘에 대한 CPU 및 메모리 사용이 감소하는 문제를 해결했습니다(작성자: Avi Avni, #6050).
  • 특히 IDE 도구의 경우 큰 문자열 할당의 중요한 원본이 Avi Avni(#5922)에 의해 수정되었습니다.
  • IntelliSense를 계산하는 과정에서 발생하는 LOB(Large Object) 힙 할당의 상당한 원본을 해결했습니다(작성자: Chet Husk, #6084).
F# 도구 개선 사항

성능 개선 사항 외에도 Visual Studio 2019용 F#에 대한 기타 다양한 개선 사항이 이루어졌습니다.

  • 이제 open 문 코드 수정을 추가하면 기본적으로 파일의 맨 위에 open 문이 추가됩니다.
  • 사용자 코드의 match!가 구조체 지침과 후속 범위에 대한 노드를 설명하는 코드를 무효화하는 버그가 수정되었습니다(#5456).
  • 이제 편집기에서 변경 가능한 값 색 지정을 사용하여 byref, outrefref 값을 레코드 필드로 올바르게 색 지정합니다(#5579).
  • 이름 바꾸기 리팩터링에서 기호 이름의 ' 문자를 인식하지 못하는 버그가 수정되었습니다(#5604).
  • F# 스크립트 파일의 이름을 바꾸면 색 지정 데이터가 손실되는 오랜 버그를 해결했습니다(#1944).
  • 백스페이스 키를 눌렀을 때 IntelliSense에서 관련되지 않은 항목을 목록에 표시하지 않도록 정리했습니다.
  • Saul Rennison이 구현한 "스마트" 들여쓰기를 사용하여 F# 코드를 편집기에 붙여넣으면 현재 커서 위치에 따라 적절한 범위에 맞게 서식이 지정됩니다(#4702).
  • F# 편집기 옵션이 동기화되지 않는 문제는 Jakob Majocha(#5997, #5998)에 의해 수정되었습니다.
  • inherit 절의 생성자에서 IntelliSense가 기본 생성자를 표시하지 않는 버그를 해결했습니다(작성자: Eugene Auduchinok, #3699).
  • F# 언어 서비스에 대한 다양한 소규모 개선 사항이 이루어졌습니다(작성자: Eugene Auduchinok).
F# 오픈 소스 인프라

.NET SDK를 사용하기 위해 F# 및 F# 도구 코드베이스를 완전히 마이그레이션했습니다. 그러면 특히 Windows를 사용하지 않는 경우 개발자의 기여 프로세스를 크게 간소화하게 됩니다. 또한 코드베이스를 변경하여 새 기여자가 문서를 정리할 수 있게 되었습니다(작성자: Jakob Majocha).

Python

고객 피드백에 따라 Visual Studio 2019에는 Python 환경 관리를 위해 정밀하게 검사된 환경이 포함되어 있습니다.

  • 프로젝트에서 가상 환경과 conda 환경을 만들고 추가하는 환경을 간소화하는 새로운 환경 추가 대화 상자가 추가되었습니다.
  • Visual Studio 설치 관리자는 Visual Studio 설치의 크기를 줄이고 업그레이드 중 오류를 방지하기 위해 더 이상 Anaconda의 전체 버전을 설치하지 않습니다.
  • Miniconda는 옵션 구성 요소로 Python 워크로드와 함께 번들로 제공되므로 Miniconda/Anaconda를 설치하지 않고도 conda 환경을 만들 수 있습니다.
  • 이제 프로젝트의 루트에 requires.txt(가상 환경) 또는 environment.yml(conda 환경)이 있는 경우 환경을 추가하라는 메시지가 자동으로 표시됩니다.
  • Python 파일을 편집할 때 새로운 Python 환경 도구 모음을 사용할 수 있습니다. 새 도구 모음을 사용하면 프로젝트, 폴더 열기 작업 영역 또는 다른 프로젝트의 느슨한 Python 파일을 작업할 때 다양한 Python 인터프리터 간에 전환할 수 있습니다.
  • 상대 가져오기 및 네임스페이스 가져오기의 향상된 검색을 비롯하여 Python IntelliSense에서 자동 완성의 품질을 향상시켰습니다.
  • Django 프로젝트 템플릿은 Django 2.x를 지원하도록 업데이트되었습니다.
  • 이제 함수 반환 값이 Python 디버거에 표시됩니다.
  • 이제 VS Live Share 세션을 만들고 다른 Visual Studio 사용자와 Python 코드에서 공동 작업을 수행할 수 있습니다. 이전에 Python은 Visual Studio Code에서 만든 세션에 조인할 때만 지원되었습니다.

JavaScript/TypeScript

  • Node.js 프로젝트의 단위 테스트 내에서 JavaScript 디버깅을 활성화하기 위한 지원을 추가했습니다. 이는 Node.js 고객이 오랫동안 요청한 기능입니다.
  • 이제 JavaScript/TypeScript 언어 서비스가 TypeScript NuGet 패키지 또는 npm 패키지가 설치된 프로젝트에 자동으로 로드됩니다(TypeScript 3.2 이상은 NuGet 패키지에서 지원되며 TypeScript 2.1 이상은 npm 패키지에서 지원됨).
  • 더 큰 프로젝트를 처리하기 위해 언어 서비스의 메모리 제한을 증가시켜 언어 서비스의 성능 개선을 구현했습니다.
  • 기본적으로 오류 목록에 닫힌 JavaScript/TypeScript 파일의 진단을 더 이상 표시하지 않습니다.
  • 레거시 JavaScript 언어 서비스는 더 이상 사용할 수 없습니다. 이전에는 사용자가 레거시 JavaScript 언어 서비스를 복원할 수 있는 옵션이 있었습니다. 사용자는 이제 새로운 JavaScript 언어 서비스를 즉시 사용할 수 있습니다. 새 언어 서비스는 정적 분석으로 구동되는 TypeScript 언어 서비스를 기반으로 합니다. 이렇게 하면 더 효율적인 도구가 가능하므로, JavaScript 코드에서 형식 정의에 기반한 풍부한 IntelliSense의 이점을 활용할 수 있습니다. 새 서비스는 가볍고 레거시 서비스보다 더 적은 메모리를 사용하므로 코드 크기 조정에 따라 더 나은 성능을 제공합니다.

팀 탐색기 및 Azure DevOps

Azure DevOps와 Git 작업 항목 환경을 개선했습니다.

  • 새 ID 선택기를 사용하여 작업 항목을 자신이나 다른 사용자에게 할당합니다. 기본적으로 가장 최근에 사용한 사용자 목록이 표시됩니다. 또는 검색 기능을 사용하여 조직의 다른 사용자를 검색하고 찾습니다.
  • 커밋 메시지에서 #mentions 환경을 개선했습니다. #mention 선택기에서 작업 항목을 선택하면 관련 작업 항목 목록에 자동으로 추가됩니다.
Assigning work items and #mention improvements
작업 항목 할당 및 #mention 개선 사항

핫 경로 강조 표시

  • 성능 프로파일러의 CPU 사용량 및 DotNet 개체 할당 도구 모두에서 실행 부하 과다 경로 강조 표시에 대한 지원을 추가했습니다. 호출 트리의 함수를 선택하고 실행 부하 과다 경로 단추를 눌러 CPU 사용량 또는 Dot Net 개체 할당 실행 부하 과다 경로를 확장합니다. 이 기능을 사용하면 가장 높은 비율의 CPU를 사용하거나 대부분의 개체를 할당하는 함수 호출을 쉽게 식별할 수 있습니다.
Hot path highlighting in the CPU Usage tool
CPU 사용량 도구에서 실행 부하 과다 경로 강조 표시

.NET 및 ASP.NET 도구

  • 모든 애플리케이션에 대한 게시 프로필 요약 페이지(새 섹션 헤더 및 작업/바로 가기)에 다양한 작은 UX 개선을 구현했습니다.
  • Azure App Service에 ASP.NET 애플리케이션을 게시할 때, 이제 게시 프로필 요약 페이지에 "종속성"이라는 새로운 섹션이 있습니다. 이 새로운 섹션에서는 현재 Azure Storage 및 Azure SQL 리소스를 앱 서비스 인스턴스에 연결할 수 있습니다. 향후에 이 메커니즘을 통해 더 많은 Azure 서비스가 표시될 것으로 예상합니다.
  • .NET Core 프로젝트에서 호환성이 추가된 코드 메트릭을 사용합니다.
  • 도구 > 옵션 > 텍스트 편집기 > C# > 코드 스타일에 있는 “설정에서 .editorconfig 파일 생성” 단추를 사용하여 편집기 설정을 Editorconfig 파일로 내보냅니다.
  • C# 및 Visual Basic의 새로운 Regex 파서 지원을 사용합니다. 이제 정규식이 인식되고, 여기에 언어 기능을 사용하도록 설정할 수 있습니다. Regex 문자열은 문자열이 Regex 생성자에 전달되거나 language=regex 문자열을 포함한 주석이 바로 앞에 있을 때 인식됩니다. 이 릴리스에 포함된 언어 기능은 분류, 중괄호 일치, 강조 표시 참조 및 진단입니다.
Regular expressions now have parser support
정규식 파서 지원
  • 사용하지 않는 멤버의 선언을 제거하기 위해 선택적 코드 수정을 통해 사용하지 않는 전용 멤버에 대한 데드 코드 분석을 사용할 수 있습니다.
  • 접근자에 대한 참조 찾기 기능은 이제 해당 접근자에 대한 결과만 반환합니다.
  • 분해 메서드를 생성하기 위한 코드 수정이 추가되었습니다.
  • 파일에 코드를 붙여넣을 때 "using" 문을 추가할 수 있습니다. 누락된 관련 가져오기를 추가하도록 요청하는 인식된 코드를 붙여넣으면 코드 수정이 나타납니다.
  • 이제 "Ctrl + ." 또는 "Alt + Enter"를 사용하여 더 많은 리팩터링 및 빠른 작업을 사용할 수 있습니다.
    • 이제 "await"가 함축되어 있지만 생략되면 컴파일러 경고가 발생하는 경우
    • 로컬 함수를 메서드로 변환하는 경우
    • 튜플을 명명된 구조체로 변환하는 경우
    • 무명 형식을 클래스로 변환하는 경우
    • 무명 형식을 튜플로 변환하는 경우
    • LINQ 쿼리 또는 LINQ 메서드에 대한 foreach 루프의 경우
  • 이제 Azure Kubernetes Service에서 실행되는 ASP .NET Core 애플리케이션에 대한 지원이 추가되었습니다. 시작하려면 GitHub를 통해 이 docker 예제를 참조하세요.
  • ASP.NET은 이제 성능 프로파일러의 CPU 사용량 도구에서 지원됩니다.
CPU Usage Tool in Performance Profiler
성능 프로파일러의 CPU 사용량 도구
  • 이제 모든 참조 찾기(Shift+F12) 및 CodeLens를 사용하여 .NET Core 프로젝트에 Razor(.cshtml) 파일의 결과를 표시할 수 있습니다. 그러면 관련 Razor 파일에서 식별된 코드로 이동할 수 있습니다.
  • Windows VM(Virtual Machines) 및 VM Scale Sets에서 실행되는 ASP .NET(코어 및 데스크톱) 애플리케이션을 대상으로 하는 지원이 추가되었습니다.
Snapshot debugger target selection UI
스냅샷 디버거 대상 선택 UI
  • 이제 FxCop을 사용하여 코드 분석을 실행할 때 경고를 받을 수 있습니다. .NET 컴파일러 분석기는 앞으로 코드 분석을 수행하는 데 추천되는 방법입니다. .NET 컴파일러 플랫폼 분석기로 마이그레이션을 자세히 참조하세요.
  • PCL(이식 가능한 클래스 라이브러리) 프로젝트 템플릿을 더 이상 사용할 수 없으며, 프로젝트 지원은 기본적으로 설치되지 않습니다. 여러 플랫폼을 대상으로 하는 새 프로젝트는 .NET Standard 프로젝트 형식을 사용해야 합니다. PCL 프로젝트 지원이 필요한 고객은 Visual Studio 설치 관리자의 개별 구성 요소 탭과는 별도로 구성 요소를 설치해야 합니다.
  • "Project.CopyWebSite" 명령은 더 이상 사용할 수 없습니다. 이 기능은 .NET용 "웹 사이트" 프로젝트 형식에서만 사용할 수 있었습니다. 이는 두 개의 웹 사이트를 동기화하여 각 파일의 버전이 동일하게 되도록 하는 기능을 제공했습니다. Visual Studio 2019에서는 Visual Studio 외부의 원격 대상에서 파일을 복사한 다음, 프로젝트를 열 수 있습니다.
  • 원격 FTP 위치에서 웹 사이트 프로젝트를 여는 기능이 제거되었습니다. FTP 사용자는 Visual Studio 외부의 원격 대상에서 파일을 복사하고, 프로젝트를 열어 변경한 다음, 게시를 사용하여 원격 FTP 위치에 다시 푸시할 수 있습니다.
  • ASP.NET 및 웹 워크로드는 더 이상 사용자 지정 CoffeeScript 편집 환경을 설치하지 않습니다. Visual Studio의 TextMate 번들은 CoffeeScript를 사용하는 데 뛰어난 환경을 제공합니다.
  • 현재 CSSLint 및 CoffeeLint의 기본 제공 복사본에서 생성되는 CSS 및 CoffeeScript 오류는 해당 파일을 편집할 때 더 이상 자동으로 표시되지 않습니다. npm 또는 Visual Studio 작업 실행기 탐색기와 같은 linter를 실행하는 대체 메서드를 사용합니다.
  • Visual Studio에서는 더 이상 녹아웃 HTML 특성에 대한 IntelliSense를 제공하지 않습니다. Visual Studio 2019에서 해당 특성을 입력해야 합니다.
  • JavaScript 디버깅을 위해 ASP.NET 프로젝트에서 레거시 Chrome 디버거를 사용하는 기능이 제거되었습니다. Visual Studio에 기본 제공된 현재의 Chrome 디버거는 계속 사용할 수 있습니다.
  • ASP.NET 프로젝트에서 JavaScript 콘솔 기능을 사용하는 기능이 제거되었습니다. 고객은 즐겨 찾는 브라우저 DevTools에 포함된 콘솔을 사용하는 것이 좋습니다.

컨테이너 도구

  • 컨테이너화 및 디버깅을 위한 간소화된 단일 프로젝트 환경을 추가했습니다.
    • ASP.NET 웹 애플리케이션(.NET Framework)
    • 콘솔 애플리케이션(.NET Core)
  • Alpine을 기본 이미지로 사용하는 ASP.NET Core 애플리케이션 디버깅에 대한 지원을 추가했습니다.
  • 최신 ASP.NET 및 .NET Core 이미지에 대한 지원을 추가했습니다.

.NET Core 도구

.NET Core 3.0

이 릴리스에서는 미리 보기 SDK가 설치된 경우 .NET Core 3.0을 대상으로 하는 ASP.NET Core, 콘솔 및 클래스 라이브러리 프로젝트를 만들 수 있습니다.

Visual Studio RC를 사용하는 경우 도구 > 옵션 > 프로젝트 및 솔루션 > .NET Core로 이동하여 .NET Core SDK 미리 보기 사용 확인란도 선택해야 합니다. Visual Studio 미리 보기를 사용하는 경우 이 작업을 수행할 필요가 없습니다. 이 설정 및 해당 동작은 Visual Studio 2017 버전 15.9용 .NET Core 도구 업데이트에서 자세히 읽을 수 있습니다.

"Dotnet new" 명령을 사용하여 .NET Core 3.0용 Windows Forms 또는 WPF 프로젝트를 만들 수도 있습니다. 그런 다음, 이러한 프로젝트는 Visual Studio 2019에서 열 수 있습니다.

새로운 기능

이 버전부터 .NET SDK 스타일 프로젝트에 대한 프로젝트 파일을 Visual Studio의 첫 번째 클래스 파일 형식으로 만듭니다. 이제 다음 항목이 지원됩니다.

  • 프로젝트 노드를 두 번 클릭하여 프로젝트 파일 열기
  • 프로젝트 노드를 한 번 클릭하여 미리 보기 탭에서 프로젝트 파일 열기
  • 모든로 이동하여 이름으로 프로젝트 파일 찾기(ctrl + T)
  • 이제 프로젝트 파일의 MSBuild 요소를 파일에서 찾기로 검색 가능
  • 프로젝트 작성 오류가 트리거되는 경우 오류 목록에서 열기

또한 .NET SDK 스타일 프로젝트는 이제 콘솔 앱에서 F5ctrl + F5에 대한 새 통합 콘솔 환경을 사용합니다. 이렇게 하면 Visual Studio에서 콘솔 애플리케이션을 시작할 때의 환경이 통합됩니다.

  • F5의 경우, 앱 실행이 완료될 때 콘솔 창이 자동으로 닫히지 않습니다. 더 이상 Console.Read() 호출을 콘솔 앱에 추가할 필요가 없습니다.
  • ctrl + F5의 경우, 콘솔 창은 앱의 후속 실행에서 다시 사용됩니다. 더 이상 콘솔 창의 로드를 닫을 필요가 없습니다.

창이 열려 있을 때 키를 누르거나 도구 > 옵션 > 디버깅이 중지될 때 콘솔 자동으로 닫기 옵션을 선택하면 새 콘솔 창을 자동으로 닫을 수 있습니다.

이제 라이선스 식 및 라이선스 파일에 대한 지원이 프로젝트 속성 페이지에 추가되었습니다. 그러면 변경 내용을 NuGet에서 licenseUrl을 사용할 수 없게 맞춥니다.

성능 개선 사항
  • 대규모 솔루션의 확장성이 크게 향상되어 이전보다 훨씬 대규모의 .NET Core 솔루션을 사용할 수 있습니다.
  • 로드하는 경우에 CPU 및 메모리 사용이 있으므로 대규모 프로젝트에 대한 솔루션 로드 시간이 크게 줄어듭니다.
비 .NET Core 프로젝트를 포함하는 기능 패리티

16.0, 16.0 미리 보기 2, 16.0 미리 보기 316.0 미리 보기 4 마일스톤에서 문제의 전체 목록 및 끌어오기 요청을 확인할 수 있습니다.

.NET 생산성

  • .NET 리팩터링 및 codefixs:

    • 동기화 네임스페이스 및 폴더 이름
    • 대화 상자 옵션을 사용하여 리팩터링하는 멤버 끌어오기
    Pull members up refactoring with dialog options
    멤버 끌어오기 대화 상자
    • 매개 변수/인수의 래핑/들여쓰기/맞춤 목록
    • 익명 형식을 튜플로 변환
    • 람다용 식/블록 본문 사용
    • 조건식 및 논리 연산 반전
    • “/”에 대한 블록 주석 자동으로 닫기
    • 복합 할당 변환
    • 암시적으로 형식화된 변수 수정은 상수일 수 없습니다.
    • 보간된 문자열을 입력할 때 @$"$@"로 대체하는 자동 수정자
    • #nullable enable|disable에 대한 완료
    • 사용되지 않는 식 값 및 매개 변수 수정
    • 인터페이스 추출이 동일한 파일에 남아 있도록 수정
  • 읽기/쓰기별로 참조를 분류합니다.

  • csharp_prefer_braces에 대한 Editorconfig when_multiline 옵션을 추가합니다.

  • 새 분류 색은 .NET Compiler Platform SDK(aka Roslyn)에서 제공됩니다. Visual Studio Code 색과 유사한 새로운 기본 색이 점진적으로 롤아웃되고 있습니다. 향상된 색 사용 확인란의 선택을 취소하여 도구 > 옵션 > 환경 > 글꼴 및 색에서 이러한 색을 조정하거나 환경 > 미리 보기 기능에서 끕니다. 이 변경 내용이 워크플로에 미치는 영향에 대한 의견을 보내주시면 감사하겠습니다.

New Roslyn classification colors
새 Roslyn 분류 색

ASP.NET 프로젝트의 JavaScript 디버깅

  • ASP.NET 프로젝트의 "찾아보기..." 메뉴를 사용하여 사용자 지정 인수가 포함된 새 Google Chrome 브라우저를 추가한 경우, 이제 Visual Studio에서 디버깅을 시작할 때 애플리케이션에 대한 JavaScript 디버깅을 사용할 수 있습니다. Chrome을 시작할 때 Google Chrome용 사용자 지정 시작 인수가 적용됩니다.
Adding Google Chrome with Custom arguments using 'Browse with'
'찾아보기...'를 사용하여 사용자 지정 인수에 Google Chrome 추가
참고: 기본적으로 Visual Studio는 데이터 디렉터리의 경로를 인수로 제공하지 않는 한 일반 Chrome 인스턴스와 다른 데이터 디렉터리를 사용하여 Chrome을 시작합니다. 따라서 이 Chrome 인스턴스를 사용할 때 사용 가능한 확장이 필요한 경우 처음으로 설치해야 합니다.

ASP.NET 및 Azure Functions 도구

  • Visual Studio 2019에는 새 프로젝트를 만들기 위한 새 환경이 포함되어 있습니다. 특히 새 ASP.NET 프로젝트를 만들 때 Visual Studio에서는 ASP.NET 관련 선택 항목을 나타내는 추가 대화 상자를 제공합니다. 이러한 추가 대화 상자는 나머지 환경의 시각적 스타일과 일치하도록 업데이트되었습니다.
  • 당분간은 Visual Studio의 게시 자격 증명이 암호화되어 게시 프로필 사용자 파일에 저장되므로 애플리케이션을 게시할 때마다 다시 입력할 필요가 없습니다. 일반적으로 사용자 파일은 공유되어서는 안 되는 비밀 및/또는 개인 정보를 포함할 가능성이 있으므로 기본적으로 소스 제어에서 제외됩니다. 지금까지는 Azure Functions 프로젝트의 게시 프로필이 체크 인되고 사용자 파일은 그렇지 않은 경우, 게시 자격 증명이 누락되어 게시 프로필을 재사용할 수 없었습니다. 이제 자격 증명을 편집하고 새 사용자 파일을 만들 수 있으므로 게시 프로필을 재사용할 수 있습니다.

성능 마법사

Visual Studio 2019에서는 성능 마법사에서 사용할 수 있는 프로파일링 환경이 성능 프로파일러로 전환되었습니다. 샘플링과 계측을 위한 CPU 사용량 도구는 성능 프로파일러의 계측 도구에서 찾을 수 있습니다. 이 변경으로 인해 성능 마법사는 더 이상 필요하지 않으며 Visual Studio 2019에서 제거되었습니다. 또한 VS 성능 명령줄 도구에서 샘플 추출 옵션이 제거되었으며, 예정된 미리 보기에서 대체 명령줄 도구가 릴리스됩니다.

테스트 도구

  • 이제 솔루션 탐색기에서 테스트, 테스트 클래스 또는 테스트 프로젝트를 마우스 오른쪽 단추로 클릭하여 테스트를 실행하거나 디버그할 수 있습니다.
  • 이제 테스트 실행은 프로젝트 속성에서 설정된 프로세서 아키텍처를 자동으로 검색합니다.
  • Selenium 및 Appium과 같은 OSS UI 테스트 도구는 추진력을 얻고 있고 커뮤니티에서 강력하게 지원하고 있습니다. 이러한 프레임워크는 업계 표준이 되었으므로 자동화된 UI 구동 기능 테스트에 코딩된 UI 테스트가 더 이상 사용되지 않습니다. Visual Studio 2019는 코딩된 UI 테스트 기능을 갖춘 Visual Studio의 최종 버전이 됩니다. 웹 애플리케이션 테스트에는 Selenium을 사용하고, 데스크톱 및 UWP 애플리케이션 테스트에는 WinAppDriver가 있는 Appium을 사용하는 것이 좋습니다.
  • Visual Studio 2019는 부하 테스트 기능이 있는 Visual Studio의 최종 버전이 됩니다. 부하 테스트 도구가 필요한 고객의 경우 Apache JMeter, Akamai CloudTest, Blazemeter와 같은 대체 부하 테스트 도구를 사용하는 것이 좋습니다.
  • Visual Studio 2019에서는 이전에 공용으로 표시되었지만 공식적으로 문서화되지 않은 테스트 창 API의 일부가 제거되었습니다. 확장 유지 관리자에게 일찍 경고하기 위해 Visual Studio 2017에서 '사용되지 않음'으로 표시되었습니다. 아는 바로는, 이러한 API에 대한 종속성을 사용하는 확장은 거의 없습니다. 이러한 API에는 IGroupByProvider, IGroupByProvider, KeyComparer, ISearchFilter, ISearchFilterToken, ISearchToken 및 SearchFilterTokenType이 포함됩니다. 이 변경으로 인해 확장에 영향을 주는 경우 개발자 커뮤니티에 문제를 제출하여 알려주세요.

Visual Studio Kubernetes 도구

이전에 Visual Studio 2017에 대해 별도 확장으로 제공되었던 Visual Studio Kubernetes 도구는 이제 Visual Studio 2019의 Azure 개발 워크로드에 통합되었습니다.

새 프로젝트에 Kubernetes 지원 추가

Kubernetes 지원을 새 프로젝트에 추가하려면 Visual Studio를 열고 새 프로젝트 만들기 옵션을 선택합니다. 새 프로젝트 만들기 창에서 Kubernetes를 검색하고 Kubernetes용 컨테이너 애플리케이션 프로젝트 템플릿을 선택합니다.

Creating a Container Application for Kubernetes
Kubernetes용 컨테이너 애플리케이션 만들기

다음을 클릭하고 프로젝트 이름, 위치 및 솔루션 이름을 입력합니다. 그런 다음 만들기를 클릭합니다. 프로젝트에 사용할 ASP.NET Core 애플리케이션 템플릿을 선택하고 확인을 클릭합니다. Visual Studio는 Kubernetes 클러스터에 새 애플리케이션을 빌드하고 배포하는 데 사용할 수 있는 Dockerfile 및 Helm 차트를 자동으로 만듭니다. 필요에 따라 이러한 아티팩트를 수정할 수 있습니다.

기존 프로젝트에 Kubernetes 지원 추가

Kubernetes에 대한 지원을 기존 ASP.NET Core 애플리케이션에 추가할 수도 있습니다. 이렇게 하려면 Visual Studio 2019에서 프로젝트를 엽니다. 솔루션 탐색기에서 프로젝트를 마우스 오른쪽 단추로 클릭하고 추가를 가리킨 다음, 컨테이너 오케스트레이터 지원을 클릭합니다.

Adding container orchestrator support
컨테이너 오케스트레이터 지원 추가

컨테이너 오케스트레이터 지원 추가 대화 상자에서 Kubernetes/Helm을 선택하고 확인을 클릭합니다. Visual Studio는 Kubernetes 클러스터에 애플리케이션을 빌드하고 배포하는 데 사용할 수 있는 Dockerfile 및 Helm 차트(charts라는 폴더에 있음)를 자동으로 만듭니다. 이러한 아티팩트 중 하나가 이미 제 위치에 있으면 덮어쓰지 않습니다. 필요에 따라 이러한 아티팩트를 수정할 수 있습니다.

공개적으로 액세스할 수 있는 엔드포인트 만들기

Kubernetes 지원을 새 프로젝트나 기존 프로젝트에 추가하면 Visual Studio에서 애플리케이션에 공개적으로 액세스할 수 있는 엔드포인트를 만들지 여부를 묻습니다.

Publicly accessible endpoint prompt
공개적으로 액세스할 수 있는 엔드포인트 프롬프트

를 클릭하면 애플리케이션이 Kubernetes 클러스터에 배포될 때 Visual Studio가 Kubernetes 수신 개체를 생성하기 위해 애플리케이션의 Helm 차트를 구성합니다. Helm 차트를 수정하여 언제든지 이 옵션을 변경할 수 있습니다.

Azure Kubernetes Service에서 애플리케이션 디버깅

Kubernetes 지원을 새 프로젝트나 기존 프로젝트에 추가한 후에는 Azure Dev Spaces라는 기능을 사용하여 라이브 AKS(Azure Kubernetes Service) 클러스터에서 애플리케이션을 쉽게 빌드, 실행 및 디버그할 수 있습니다. 이는 실제 Kubernetes 클러스터의 컨텍스트에서 프로젝트를 테스트하거나 전체 애플리케이션을 로컬로 복제할 필요 없이 훨씬 더 큰 애플리케이션의 일부인 서비스를 디버깅하는 데 유용합니다. 또한 Azure Dev Spaces에는 개발 팀이 AKS 클러스터를 공유할 수 있도록 해주는 기능이 포함되어 있습니다. Azure Dev Spaces에 대한 자세한 내용은 Azure Dev Spaces 설명서를 참조하세요. 시작하려면 Azure Dev Spaces가 Visual Studio에서 디버그 실행 대상으로 선택되어 있는지 확인합니다.

Selecting Azure Dev Spaces as debug launch target
디버그 실행 대상으로 Azure Dev Spaces 선택

처음으로 Dev Spaces에서 프로젝트를 시작하기 전에 사용할 Azure 구독 및 AKS 클러스터를 구성합니다. 또한 프로젝트를 실행할 공간을 선택합니다.

Configuring Azure Dev Spaces
Azure Dev Spaces 구성

일반적으로 팀은 기본 공간에서 전체 애플리케이션의 안정적인 최신 버전을 실행합니다. 그런 다음, 기본 공간의 자식 공간에서 작업 중인 서비스 버전을 실행합니다. 이제 자식 공간에서 다른 서비스를 실행할 필요가 없습니다. Dev Spaces는 기본에서 실행 중인 서비스의 안정적인 버전으로 서비스의 호출을 자동으로 라우팅합니다. 이를 설정하는 방법에 대한 자세한 내용은 Azure Dev Spaces 설명서의 팀 개발 자습서를 참조하세요. 올바른 구독, 클러스터 및 공간을 선택한 후에는 확인을 클릭하여 Dev Spaces 구성을 계속 진행합니다. 연결된 Dev Spaces 컨트롤러가 아직 없는 클러스터를 선택한 경우 다음 대화 상자에서 확인을 클릭하여 자동으로 클러스터를 만듭니다.

Enable Dev Spaces dialog
Dev Spaces 대화 상자 사용

컨트롤러 생성에는 약 2분이 소요됩니다. Visual Studio 창의 왼쪽 아래 모서리에 있는 백그라운드 작업 단추를 클릭하여 상태를 확인합니다.

Azure Dev Spaces controller creation status via Background Tasks
백그라운드 작업을 통해 Azure Dev Spaces 컨트롤러 생성 상태

Dev Spaces 컨트롤러를 사용할 준비가 되면 F5를 누르거나 도구 모음에서 Azure Dev Spaces 디버그 단추를 클릭하여 AKS에서 프로젝트를 디버그합니다.

Azure Dev Spaces debug button
Azure Dev Spaces 디버그 단추

Dev Spaces는 코드를 Azure에 동기화하고, 코드가 포함된 컨테이너 이미지를 빌드하고, 프로젝트에 정의된 Helm 차트를 사용하여 AKS 클러스터에 배포합니다. Visual Studio는 클러스터에서 실행 중인 서비스에 대한 원격 디버그 연결을 열어 로컬에서 실행되는 서비스를 디버깅할 때와 마찬가지로 상호 작용할 수 있습니다.

Xamarin을 사용한 모바일 개발

이 릴리스에서는 워크로드 크기, Android 빌드 성능 및 안정성뿐만 아니라 Xamarin.Android 및 Xamarin.Forms 생산성도 향상되었습니다.

  • Xamarin 워크로드는 이제 7.69GB이며, Visual Studio 2017 버전 15.9에 비해 2배 감소했으며 버전 15.7에 비해 3배 향상되었습니다.
  • IntelliCode 확장은 이제 Xamarin.Forms XAML을 지원합니다.
파일 > 새 프로젝트

새 Xamarin 프로젝트를 만드는 데 걸리는 시간을 단축하여 애플리케이션 빌드를 더 빠르게 시작할 수 있도록 성능을 개선했습니다. 또한 이제 낮은 대역폭 또는 오프라인 상황에서 특히 패키지 복원 시간을 줄이기 위해 템플릿에서 사용되는 NuGet 패키지를 워크로드 설치의 일부로 포함시켰습니다. 이러한 개선 사항으로 새 Xamarin 프로젝트가 완전히 로드되고 복원되는 데 걸리는 시간이 경우에 따라 거의 50%가 단축됩니다.

New Xamarin project comparison gif
Visual Studio 버전 15.9(왼쪽) 및 Visual Studio 2019(오른쪽)에서 새 Xamarin 프로젝트 만들기
빌드 진행률 표시기

이제 프로젝트를 빌드할 때 더 자세한 빌드 진행률 정보를 볼 수 있습니다. 빌드하는 동안 왼쪽 아래 모서리에 있는 백그라운드 작업 아이콘을 클릭하면 실행 중인 현재 빌드 대상이 표시됩니다. 이는 빌드가 계속 실행 중이지만 대상을 완료하는 데 오랜 시간이 걸리는지 여부를 확인하는 데 유용할 수 있습니다.

Xamarin build progress indicator
Xamarin 빌드 진행률 표시기
Xamarin.Forms 미리 보기의 기본 미리 보기 모드

코드의 미리 보기를 표시하기 위해 Xamarin.Forms XAML 미리 보기에서 프로젝트를 빌드할 필요가 없습니다. XAML 파일에 사용자 지정 컨트롤이 있는 경우 프로젝트를 빌드하여 미리 보거나 디자인 타임 렌더링을 옵트인해야 합니다.

Xamarin.Forms 미리 보기 디바이스 드롭다운

이제 다른 Android와 iOS 디바이스를 교환하여 새 디바이스 드롭다운 메뉴를 사용하는 경우 Xamarin.Forms XAML을 미리 볼 수 있습니다.

Xamarin.Forms Device Drop-Down
Xamarin.Forms 디바이스 드롭다운
Xamarin.Forms 속성 패널

이제 속성 패널에서 Xamarin.Forms 컨트롤, 셀 및 레이아웃의 가장 일반적인 특성을 편집하고, XAML에 즉시 반영된 변경 내용을 확인할 수 있습니다.

Xamarin.Forms Property Panel
Xamarin.Forms 속성 패널
Xamarin.Forms 셸 템플릿

최신 Xamarin.Forms 릴리스를 사용하도록 Xamarin.Forms 템플릿을 업데이트하고 Xamarin.Forms Shell 앱에 대한 새 템플릿 옵션을 추가했습니다. Shell은 앱의 복잡성을 줄이는 동시에 개발자 생산성을 높이고 렌더링 속도와 메모리 소비에 중점을 두는 것을 목표로 합니다. 이 템플릿은 Android 및 iOS용 부트스트랩된 Shell 앱을 제공합니다.

Android 빌드 성능 및 안정성

Visual Studio 2017 버전 15.9 및 Mac용 Visual Studio 7.7에서 초기 빌드 성능과 빌드 정확성이 향상되었습니다. Visual Studio 2019 및 Mac용 Visual Studio 7.8에서는 훨씬 더 빠르게 빌드되고 배포됩니다.

Android Build Performance
*커피잔을 잡는 것보다 빠른 Android 빌드*
  • 이제 Android의 차세대 패키징 도구를 사용할 수 있습니다. 이 기능을 사용하도록 설정하려면 프로젝트의 .csproj다음 항목에 MSBuild 플래그를 추가합니다.
    • aapt2 는 Android 패키징을 컴파일 및 링크의 두 단계로 나눕니다. 이렇게 하면 증분 빌드의 성능이 향상되고 이전의 오류 보고가 제공됩니다. 예를 들어 단일 파일에 대한 변경이 있는 경우 해당 파일만 다시 컴파일하면 됩니다. <AndroidUseAapt2>True</AndroidUseAapt2>
  • 프로젝트에서 이러한 도구를 사용하도록 설정하면 빌드 시간과 런타임 모두에서 성능이 향상됩니다. 이러한 속성에 대한 자세한 내용은 Xamarin.Android의 빌드 프로세스에 대한 설명서를 참조하세요.
Android 에뮬레이터 개선 사항

Visual Studio 2019에서는 Android 에뮬레이터 이미지를 더 쉽게 만들 수 있습니다. 또한 Hyper-V에서 실행할 때 Android 에뮬레이터의 성능을 향상시키기 위해 Windows 10 2018년 10월 업데이트 버전 1809에서 Windows 팀과 계속 협력해 왔습니다.

  • 새 사용자가 실행 아이콘을 누르기만 하면 첫 번째 이미지를 만들 수 있습니다.
  • 에뮬레이터 취득 환경은 설정에 가장 적합한 구성을 자동으로 결정하고, 하드웨어 가속(Intel HAXM 또는 Hyper-V 사용) 및 빠른 부팅을 기본적으로 활용합니다.
  • 다른 이미지를 만들려면 드롭다운에서 Android Emulator 만들기를 선택하여 Android Device Manager를 엽니다.
Xamarin.Android에서 빌드에 대한 향상된 기능으로 빌드 시간 단축

일련의 초기 빌드 성능 개선 사항을 릴리스했습니다. 현재 Xamarin.Android 9.1.1 이상에는 이전 버전에 비해 상당한 빌드 성능 향상 기능이 포함되었습니다. 자세한 내용은 Xamarin.Android 15.9 및 16.0 빌드 성능 비교를 확인하세요.

Xamarin.Android에 대해 향상된 빠른 배포

빠른 배포는 지금까지 앱 내에 패키지된 모든 자산, 리소스, 공유 네이티브 라이브러리 또는 Java.Lang.Object에서 상속되는 사용자 정의 클래스를 변경하지 않은 시나리오의 Android 패키지(.apk 파일)를 재빌드하거나 재배포하는 것을 건너뛰어 증분 배포 시간을 단축했습니다. 향상된 빠른 배포는 공유 네이티브 라이브러리와 Java.Lang.Object에서 상속되는 클래스를 모두 포함하도록 빠른 배포 지원을 확장합니다. 이러한 향상된 기능을 사용하는 빠른 배포 빌드는 새로운 Android.App.Application 또는 Activity 하위 클래스를 추가하여 AndroidManifest.xml 파일이 변경되는 경우와 같이 제한된 수의 시나리오에서 새 .apk 파일을 생성하기만 하면 됩니다. 이러한 향상된 기능은 현재 미리 보기에서 아직 기본적으로 사용되지 않습니다. 이를 사용하려면 $(AndroidFastDeploymentType) MSBuild 속성을 .csproj 파일에서 Assemblies:Dexes로 설정합니다.

<PropertyGroup> 
  <AndroidFastDeploymentType>Assemblies:Dexes</AndroidFastDeploymentType> 
</PropertyGroup>
Xamarin.Android에서 차세대 Dex 컴파일러(d8) 및 코드 축소기(r8) 지원

Xamarin.Android는 이제 최신 Android dex 컴파일러(d8) 및 축소 코드기(r8)를 지원합니다. 이러한 기능을 사용하려면 .csproj 파일에서 $(AndroidDexTool)$(AndroidLinkTool) MSBuild 속성을 d8r8로 설정합니다.

  • d8은 더 빨리 실행되고 더 나은 런타임 성능을 갖춘 더 작은 .dex 파일을 생성하는 차세대 dex 컴파일러입니다.
<PropertyGroup> 
  <AndroidDexTool>d8</AndroidDexTool>
</PropertyGroup>
  • r8은 Java 바이트 코드를 ProGuard에 대한 요구 사항을 대체하는 최적화된 dex 코드로 변환하는 축소를 위한 새로운 도구입니다.
<PropertyGroup> 
  <AndroidLinkTool>r8</AndroidLinkTool>
</PropertyGroup>

d8 및 r8에 대한 자세한 내용은 설명서를 체크 아웃하세요.

Xamarin.Android Designer의 향상된 기능

분할 보기의 상호 작용에 대한 생산성이 크게 향상되었습니다.

  • 도구 상자에서 소스 편집기로 직접 끌어서 놓아 Android 레이아웃을 빠르게 스캐폴딩합니다.
Android Designer Toolbox to Source Editor
  • 소스 편집기의 XML 정의 범위에서 요소를 직접 선택합니다. 캐럿 위치와 해당 Android 보기를 동기화하여 편집기에서 직접 속성 패널의 요소 속성에 빠르게 접근할 수 있도록 구현되었습니다.
Android Designer Source Editor to Property Editor
  • XML 코드에 대한 인라인 색 미리 보기를 사용하여 컨트롤에서 사용하고 있는 색을 확인할 수 있습니다.
Android Designer Color Preview
  • 마우스로 값 위를 가리키면 요약 정보 기능을 사용하여 값(예: 정의된 위치 또는 색의 16진수 값)에 대해 자세히 확인할 수 있습니다.
Android Designer Quick Info
*작업 요약 정보*
제약 조건에 대한 초기 지원이 포함된 Xamarin.Android Designer 개선 사항

Android Designer의 시작 속도를 개선하기 위한 노력을 시작했습니다. 이러한 노력의 일환으로 디자이너가 로드되는 동안 제공하는 메시징도 개선했습니다.

Android Designer Output

이러한 개선과 함께 Android Designer는 이제 기본적으로 Android Pie(9.0)를 지원하며 ConstraintLayout 특성에 대한 자동 완성 기능을 제공합니다.

Xamarin.Android 디자이너를 사용하여 XML IntelliSense 및 주석 처리 최적화 향상

IntelliSense를 사용하여 위젯을 레이아웃에 추가할 때 이제 필수 특성을 처음부터 제공할 수 있도록 전체 코드 조각 환경이 제공됩니다. Android XML 레이아웃에 대해 스마트 주석 달기와 주석 처리 제거를 추가했습니다.

정의로 이동 및 Android 리소스 파일 내에서 XML IntelliSense를 사용하여 생산성 향상 및 AndroidManifest.xml

이제 리소스 URL에서 Ctrl + 클릭하여 정의된 파일 또는 줄로 이동할 수 있습니다.

Android Designer Go-To-Definition

IntelliSense/Autocompletion은 이제 레이아웃(색, 문자열, 드로어블, 메뉴, Android 매니페스트 등) 이외에 다른 Android XML 파일에서 지원됩니다.

유니버설 Windows 플랫폼

  • IntelliCode 확장은 이제 XAML을 지원합니다.
  • Visual Studio 설치의 복잡성과 크기를 줄이기 위해 Visual Studio 설치에서 Windows Phone 에뮬레이터가 제거되었습니다. 에뮬레이터는 이제 수동으로 다운로드해야 합니다.
  • Windows 10 Fall Creators Update(빌드 16299) 이전의 Windows 10 SDK를 대상으로 하는 UWP 앱용 XAML 디자인 타임 도구가 제거되었습니다. XAML 디자이너를 사용하거나 XAML 편집기를 사용하려면 애플리케이션의 대상을 Windows 10 버전 1709 이상으로 다시 지정합니다.
  • project.json을 사용하여 NuGet 종속성을 정의하는 UWP 테스트 프로젝트는 더 이상 지원되지 않습니다. 새로운 PackageReference 형식을 사용하려면 프로젝트를 업그레이드해야 합니다.
  • UWP JavaScript 앱은 Visual Studio 2019에서 더 이상 지원되지 않습니다. JavaScript UWP 프로젝트(확장명이 jsproj인 파일)는 만들거나 열 수 없습니다. Windows에서 제대로 실행되는 PWA(프로그레시브 웹앱)를 만드는 방법에 대한 설명서를 통해 자세히 알아볼 수 있습니다.
  • 이전처럼 JavaScript UWP 앱에 계속 연결할 수 있지만 Visual Studio 2019에서는 JavaScript 프로파일링 도구(네트워크, CPU 및 메모리 프로파일러)를 더 이상 사용할 수 없습니다.

Office 도구 템플릿 업데이트

Visual Studio 2019에서는 Office, SharePoint 및 VSTO 템플릿이 약간 변경되었습니다.

  • Visual Studio 2017 15.9에 추가된 SharePoint 2019 템플릿도 Visual Studio 2019에서 사용할 수 있습니다.
  • SharePoint 순차 워크플로 또는 상태 머신 워크플로 지원이 제거되었습니다. Visual Studio 2019에서 이러한 워크플로를 만들거나 열 수는 없지만 이전 버전의 Visual Studio에서는 계속 편집할 수 있습니다.
  • Office 2010 템플릿은 더 이상 사용할 수 없습니다. 그러나 기존 Office 2010 프로젝트는 Visual Studio 2019에서 계속 열 수 있습니다.
  • Office 2013 및 2016 템플릿은 Office 2013 이상을 지원한다는 것을 반영하도록 이름이 변경되었습니다.

팀 탐색기 및 Azure DevOps

팀 탐색기를 Azure DevOps 프로젝트에 연결할 때 개발자 중심의 능률적인 새 환경이 릴리스됩니다.

  • 자신에게 할당된 작업 항목, 자신이 수행하는 작업 항목, 토론에서 언급된 작업 항목 및 활동에 기반한 작업 항목에 따라 보기를 필터링하고 피벗하여 관련 작업 항목에 집중합니다.

    • 각 보기 내에서 작업 항목을 인라인으로 만들고, 간단한 인라인 편집을 수행하고, 작업 항목을 '완료'로 표시하고, 작업 항목을 보류 중인 변경에 연결할 수 있습니다.
  • 작업 항목을 로컬 분기에 대한 변경과 자동으로 연결되는 작업 항목에서 해당 로컬 분기를 만듭니다. 이는 기본 환경입니다. 레거시 환경으로 전환하려면 Visual Studio에서 작업 항목 환경 설정의 지침에 따라 수행하면 됩니다. 이 새 환경은 Git 리포지토리에만 해당됩니다. TFVC 리포지토리에 대한 새 환경은 다음 업데이트에서 사용할 수 있습니다..

    Azure DevOps Work Item Hub
    *Azure DevOps 작업 항목 허브*
  • 보류 중인 변경 커밋 메시지에서 #mention을 수행할 때 작업 항목을 검색합니다. 자세한 내용은 작업 항목 페이지를 사용하여 작업 항목 보기 및 추가를 참조하세요.

    Azure DevOps #mentions
    *Azure DevOps #mentions*
  • Azure DevOps의 낮은 채택으로 인해 Microsoft Project 지원이 Visual Studio 2019용 Team Foundation Server Office 통합 2019 플러그 인에서 제거되었습니다. 이제 작업 항목은 Excel로 내보내고 프로젝트에 수동으로 붙여넣어야 합니다.

  • PowerPoint 지원이 Visual Studio 2019용 Team Foundation Server Office 통합 2019 플러그 인에서 제거되었습니다. 그러나 사용자는 여전히 PowerPoint에서 스토리보드를 만들고, Azure DevOps의 작업 항목에 수동으로 연결할 수 있습니다.

Application Insights 및 HockeyApp

  • 기능이 더 풍부한 대안을 위해 Application Insights 추세 창이 Visual Studio 2019에서 제거되었습니다. 대신, Visual Studio에서 Application Insights 검색 창을 사용하거나, Azure Portal의 Application Insights에서 다양한 진단 도구 세트를 사용할 수 있습니다.
  • HockeyApp SDK를 추가하고 새 베타 배포판을 만드는 마법사가 제거되었습니다. 대신, HockeyApp의 후속인 Visual Studio App Center를 사용하는 것이 좋습니다. Visual Studio에서 이러한 바로 가기가 없는 경우를 제외하고는 HockeyApp을 정상적으로 계속 사용할 수 있습니다.

Release Notes Icon Visual Studio 2019 RC에서 해결된 주요 문제

가장 최근에 업데이트됨(2019년 4월 26일)


알려진 문제

아래 링크에서 Visual Studio 2019 버전 16.0의 알려진 기존 문제 및 사용 가능한 해결 방법을 모두 확인하세요.

Visual Studio 2019 Known Issues

피드백 및 제안

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


Blogs

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


Visual Studio 2019 릴리스 정보 기록

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


맨 위로 이동