Visual Studio IconVisual Studio 2017 버전 15.8 릴리스 정보


개발자 커뮤니티 | 시스템 요구 사항 | 호환성 | 배포 가능한 코드 | 사용 조건 | 블로그 | 알려진 문제



참고 항목

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


지원 기간

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

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

Visual Studio 블로그

Visual Studio 블로그는 엔지니어링 팀의 제품 인사이트가 제공되는 공식 출처입니다. 다음 게시물에서 Visual Studio 2017 버전 15.8 릴리스에 대한 심층 정보를 찾을 수 있습니다.

Visual Studio 2017 버전 15.8 릴리스

Important

Visual Studio 2017 버전 15.8 보안 권고 알림

15.8의 주요 새 기능 요약

15.8에서 해결된 주요 문제

고객이 보고한 문제 중 15.8에서 해결된 문제는 다음과 같습니다.

Visual Studio 2017 버전 15.8에서 해결된 모든 고객 보고 문제를 확인하세요.

The Developer Community Portal


15.8의 새로운 기능에 대한 세부 정보

Release Notes IconVisual Studio 2017 버전 15.8.0

릴리스 날짜: 2018년 8월 14일

15.8의 새 기능

설치

설치를 시작하기 전에 모든 설치 파일을 다운로드하는 옵션이 생겼습니다.

  • 이 옵션을 사용하려면 설치 관리자 (그림 1)에서 "모두 다운로드한 후 설치" 옵션을 선택하세요. 인터넷 연결이 느린 경우 이 옵션을 권장합니다.
  • 기본 옵션은 다운로드와 설치를 동시에 진행하는 "다운로드하는 동안 설치"로 유지됩니다.
Download Otion
(그림 1) 다운로드 옵션

성능

이 릴리스에서는 다음과 같이 성능이 개선되었습니다.

  • 더 이상 솔루션을 다시 로드할 필요가 없기 때문에 대규모 솔루션에서 C#, VB 및 C++ 프로젝트에 대한 분기 전환이 훨씬 빨라졌습니다.
  • 대규모 솔루션에서 작은 C# 및 VB 프로젝트 집합을 언로드 및 다시 로드하는 시간이 몇 분에서 몇 초로 줄었습니다.
  • 특정 유형의 파일 또는 디자이너를 다시 열면 솔루션 로드가 지연될 수 있으므로 이전 세션에서 열린 문서를 사용 열지 못하게 하는 옵션이 추가되었습니다.
    • 이 옵션은 도구 > 옵션 > 프로젝트 > 솔루션 > 일반에서 설정/해제할 수 있습니다.

성능 테스트

여러 테스트 프로젝트가 포함된 대규모 솔루션에서 몇 가지 테스트를 실행할 때 성능이 대폭 향상되었습니다. 랩에서는 MSTests 10,000개 이상이 포함된 솔루션이 단일 테스트를 최대 82%까지 더 빠르게 실행했습니다.

Visual Basic 성능 향상

이제 Visual Basic은 CInt(Fix(number)) 패턴을 사용하여 정수가 아닌 형식에서 정수로 변환할 때 엄청나게 향상된 성능을 제공합니다.

성능 프로파일링

이 릴리스에서는 다음과 같이 성능 프로파일링이 개선되었습니다.

  • 일시 중지된 상태에서 프로파일링을 다시 시작하는 기능이 추가되었습니다.

    • 성능 프로파일러(ALT-F2)의 CPU 사용량 도구를 이제 일시 중지된 상태(그림 2)에서 시작할 수 있습니다. 이는 CPU 사용량 조사에 적합한 시나리오를 기다리는 동안 유용할 수 있습니다. 시작 시 CPU 사용량 수집을 비활성한 경우 성능 프로파일러는 특별히 활성화될 때까지 CPU 사용량 샘플 스택 데이터를 수집하지 않습니다. 따라서 수집 및 분석할 데이터 양이 줄어들어 성능 조사의 효율성이 향상됩니다.

    • CPU 사용량 샘플 수집이 비활성화된 세션을 시작하려면 성능 프로파일러 시작 페이지에서 CPU 사용량 옆의 기어 아이콘을 클릭합니다. CPU 사용량 속성 페이지에서 CPU 프로파일링(샘플링) 사용을 선택 취소하고 확인을 클릭하여 설정을 저장합니다.

      CPU Usage Tool settings page
      (그림 2) CPU 사용량 도구 설정
    • 대상 애플리케이션을 시작하면(성능 프로파일러 시작 페이지에서 시작 클릭) CPU 프로파일링을 제어할 수 있는 CPU 사용률 그래프(그림 3)가 표시됩니다. CPU 사용량 샘플 스택 데이터 수집을 활성화하려면 보기 가운데에서 CPU 프로파일링 사용을 선택하거나 CPU 사용률 그래프 바로 아래에서 CPU 프로필 기록을 클릭합니다. CPU 프로필 기록을 클릭하여 원하는 횟수만큼 샘플 데이터 수집을 설정/해제할 수 있습니다. CPU 사용률 그래프의 색상은 해당 시점에 샘플 수집이 설정되었는지 아니면 해제되었는지를 나타내도록 변화합니다.

      CPU Usage Tool monitoring view
      (그림 3) CPU 사용량 사용률 그래프
  • .NET 개체 할당 추적 도구가 추가되었습니다.

    • .NET 개체 할당 추적 도구는 성능 프로파일러에 제공되는 도구 제품군을 연결합니다. 성능 프로파일러 세션에 대해 이 도구를 호출하면 대상 애플리케이션에서 발생하는 모든 .NET 개체 할당에 대한 스택 추적 수집이 시작됩니다. 이 스택 데이터를 개체 형식 및 크기 정보와 함께 분석하여 애플리케이션의 메모리 작업 세부 정보를 표시합니다. 신속하게 코드의 할당 패턴을 확인하고 잘못된 부분을 식별할 수 있습니다. 또한 GC(가비지 수집) 이벤트의 경우, 어떤 개체가 수집되고 유지되는지 쉽게 확인하고 애플리케이션의 메모리를 가장 많이 사용하는 개체 형식을 신속하게 식별할 수 있습니다.
    • 이는 API 작성기이 할당을 최소화하는 데 특히 유용합니다. 많은 애플리케이션이 진단 데이터 수집과 관련된 버퍼 한도를 초과하지만, API의 주요 시나리오를 실행하는 작은 테스트 애플리케이션을 잘 진단할 수 있습니다. 테스트 애플리케이션이 실행되는 동안 성능 프로파일러는 라이브 개체(개수)의 선 그래프와 개체 델타(변경율) 막대 그래프를 표시합니다.
    • .NET 개체 할당 추적 도구를 사용하려면 성능 프로파일러 시작 페이지(그림 4)를 표시하고 프로파일링할 대상을 선택하고(기본 대상은 솔루션의 시작 프로젝트), 사용 가능한 도구 아래에서 .NET 개체 할당 추적을 선택한 다음, 시작을 클릭합니다.
    Performance Profiler launch page
    (그림 4) 성능 프로파일러 시작 페이지

성능 프로파일링(CPU 사용량)

이 릴리스에서는 성능 프로파일러의 CPU 사용량 도구(ALT-F2를 통해 사용 가능)가 다음과 같이 개선되었습니다.

  • 이제 호출 트리 뷰는 기본적으로 비동기 실행을 논리 호출 스택별로 표시합니다. [CPU 사용량] 기본 보기의 [필터] 드롭다운에서 비동기 코드 붙이기 옵션을 선택 취소하여 이 동작을 해제할 수 있습니다.
  • 모듈(dll) 및 모듈 내 함수별로 성능 정보를 표시하는 모듈/함수 보기가 추가되었습니다. CPU 사용량 기본 보기에서 함수를 선택하면 제공되는 팝업 메뉴에서, 또는 호출 트리 또는 호출자/호출 수신자 보기에서 모듈/함수 보기를 표시할 수 있습니다.
  • CPU 사용량 도구의 기본 보기에서 CPU 사용량 그래프에 인스턴스 표시가 추가되었습니다. 함수가 실행 중일 때(예를 들어 스택에서) CPU 사용량 보기에 나열된 함수를 두 번 클릭하면 인스턴스를 볼 수 있습니다.

생산성

이 릴리스에서는 다음과 같이 생산성이 향상되었습니다.

  • C# 개발용 문서 서식을 사용하여(Ctrl + K, D 또는 Ctrl + E, D) 추가 코드 정리를 수행할 수 있습니다. 도구>옵션>텍스트 편집기>C#>코드 스타일>서식 지정>일반으로 이동하여 정리를 구성하세요.
  • Ctrl + . 또는 Alt + Enter를 사용하여 더 많은 리팩터링 및 빠른 작업을 추가했습니다.
    • Invert If는 if-else 문의 논리를 반전할 수 있습니다. 커서를 if 키워드에 놓으면 이 리팩터링이 트리거됩니다.
    • 메서드 호출 사이트에서 매개 변수 추가를 사용하면 메서드 호출 사이트에 인수를 추가하고 빠른 작업 및 리팩터링을 트리거하여 메서드에 매개 변수를 추가할 수 있습니다.
    • 불필요한 괄호 제거는 컴파일에 꼭 필요하지 않은 이진 연산자 주변의 괄호를 제거합니다. 도구>옵션>텍스트 편집기>C#>코드 스타일 일반 또는 .editorconfig를 통해 이 스타일>규칙을 구성할 수 있습니다.
      • dotnet_style_parentheses_in_arithmetic_binary_operators
      • dotnet_style_parentheses_in_relational_binary_operators
      • dotnet_style_parentheses_in_other_binary_operators
      • dotnet_style_parentheses_in_other_operators
    • 할당에 3개의 조건부를 사용하고 반환 문을 도구>옵션>에서 또는 .editorconfig를 통해 스타일 규칙으로 구성할 수도 있습니다.
      • dotnet_style_prefer_conditional_expression_over_assignment
      • dotnet_style_prefer_conditional_expression_over_return
  • [모두로 이동] 창에 새로운 명령과 향상된 기능 추가:
    • 바깥쪽 블록으로 이동(Ctrl + Alt + 위쪽 화살표)을 사용하면 바깥쪽 코드 블록의 시작 부분으로 신속하게 이동할 수 있습니다.
    • 다음/이전 문제로 이동(Alt + PgUp/PgDn)을 사용하면 다음/이전 문제(오류, 물결선, 전구)로 건너뛸 수 있습니다.
    • 멤버로 이동(Ctrl + T, M)은 이제 기본적으로 그 범위가 파일로 지정됩니다. 범위를 현재 문서로 전환하여(Ctrl + Alt + C) 기본값을 다시 솔루션으로 변경할 수 있습니다.
  • 이제 여러 캐럿을 지원하는 파일에서 여러 임의의 위치에 삽입 지점 및 선택 영역을 만들 수 있습니다. 따라서 여러 위치에서 동시에 텍스트를 추가, 편집 또는 삭제할 수 있습니다.
    • Ctrl + Alt + LeftMouseClick으로 캐럿을 삽입합니다.
    • Shift + Alt + Ins를 사용하여 현재 선택 영역과 일치하는 다음 위치에 선택 영역 및 캐럿을 추가합니다.
    • 전체 작업 목록은 편집 > 여러 캐럿을 참조하세요.
  • Alt + '를 사용하여 상황별 탐색 메뉴에 액세스합니다.
  • 새로운 두 키보드 프로필 Visual Studio CodeReSharper(Visual Studio)와의 키 바인딩을 일관적으로 유지합니다. 이러한 스키마는 도구 > 옵션 > 환경 > 키보드 및 위쪽 드롭다운 메뉴에서 찾을 수 있습니다.

디버깅

이 릴리스에서는 다음과 같이 디버깅이 향상되었습니다.

  • Visual Studio 2017 인스턴스가 두 개 이상 설치된 경우 이제는 디버깅할 때 확장을 배포할 인스턴스를 선택할 수 있습니다(그림 5). 이 방식으로 예를 들어 미리 보기 채널에서 디버깅하는 동안 Visual Studio 릴리스 채널에서 개발할 수 있습니다.

    Select your debug instance
    (그림 5) 디버그 인스턴스 선택
  • 이제 [게시] 요약 페이지 (그림 6)에서 바로 스냅샷 디버거를 연결할 수 있습니다.

    Attach Snapshot Debugger from Publish Summary page
    (그림 6) 게시 요약에서 스냅샷 디버거 연결
  • 이제 힙을 사용하여 미니 덤프를 디버깅하는 동안 작업 창을 통해 관리되는 작업 보기를 지원합니다.

유니버설 Windows 플랫폼 개발자를 위한 도구

대상 플랫폼 버전으로 Windows 10 가을 크리에이터 업데이트(빌드 16299) 이상을 사용하는 유니버설 Windows 플랫폼을 대상으로 하는 프로젝트의 XAML 디자이너를 많이 개선했습니다. 향상된 기능은 다음과 같습니다.

  • 이제 속성 검사자에서 컬렉션을 편집할 수 있습니다.
  • 이제 이러한 엔터티에 대한 정의가 다른 문서에 정의된 경우 디자이너에서 템플릿과 스타일을 편집할 수 있습니다.
  • IconElement 형식의 속성(예: AppBarButton의 아이콘)은 이제 속성 검사자에 사용자 지정 편집기가 있기 때문에 이러한 속성을 쉽게 설정할 수 있습니다.
  • 디자이너, 편집기 및 편집하며 계속하기는 이제 모두 x:DefaultBindMode와 함께 정상적으로 작동할 것입니다.
  • 이제 Blend의 Visual State Manager 환경에서 AdaptiveTrigger를 지원합니다.

Visual Studio용 F# 4.5 및 F# 도구

이 릴리스에서는 F# 언어 버전 4.5가 도입되었습니다. 이는 새로운 FSharp.Core(F# 핵심 라이브러리)의 새로운 4.5.x 제품군에도 부합합니다. F# RFC 리포지토리에서 이러한 각 변경 내용의 사양을 확인할 수 있습니다. 또한 이 릴리스에서 Visual Studio용 F# 도구도 많이 개선되었습니다.

F# 4.5

다음은 F# 언어 버전 4.5의 주요 특징입니다.

Span<'T> 지원

F#에서 Span, Memoryref-like 구문을 사용하여 API를 효과적으로 사용하고 생성할 수 있도록 Span<'T> 및 관련 기능을 개선했습니다. 여기에는 다음과 같은 기능이 포함됩니다.

  • 새로운 voidptr 형식.
  • FSharp.Core의 새로운 NativePtr.ofVoidPtrNativePtr.toVoidPtr 함수.
  • 새 형식 inref<'T>outref<'T>(각각 읽기 전용 byref 및 쓰기 전용 byref)입니다. C#의 in refout ref에 해당합니다.
  • ByRefLike 구조체(예: SpanReadOnlySpan)를 생성하는 기능.
  • IsReadOnly 구조체를 생성하는 기능.
  • 메서드에서 byref- 및 inref-returns의 암시적 역참조.
  • byref/inref/outref에서 확장 멤버를 생성하는 기능.

이 기능 집합은 byref를 반환하는 함수, 메서드 및 속성이 반환 값을 암시적으로 역참조하지 않는 F# 4.1의 byref-returns 초기 디자인에서 버그를 수정합니다. 이 기능을 C#의 ref-returns 처리 방식과 일치시키기 위해 이렇게 변경했습니다. 이제 형식 주석이 ref-return의 암시적 역참조가 사용된다고 표시하면 오류 메시지가 사용됩니다.

또한 이 기능 집합은 "악의적인 구조체 대체"가 가능한 즉, F# 구조체에서 메서드를 호출하면 호출되는 실제 구조체를 다른 구조체로 바꿀 수 있었던 F# 컴파일러의 버그를 수정합니다. 이제 구조체의 this 매개 변수는 inref<MyStruct>로 간주되고, 구조체를 수정하려는 경우 변경 가능한 필드를 추가할 것을 권장하는 오류가 표시됩니다.

이 기능 집합의 RFC에서 spanref-like 구문에 대해 자세히 알아볼 수 있습니다.

계산 식에서 일치!

F# 4.5에서는 계산 식 내에서 사용되는 새로운 키워드 match!이(가) 도입되었으며, 전적으로 John Wostenberg 씨가 도와주셨습니다. 이 편의용 문법은 결과에서 match 뒤에 오는 let!과 동일합니다. match!에 대한 RFC에서 자세히 알아볼 수 있습니다.

시퀀스, 목록 및 배열 식에서 yield를 사용하여 업캐스팅할 필요성 완화

이제 F# 4.5에서는 하위 형식을 상위 형식으로 변환하려면 yield를 사용할 때 업캐스트가 필요했던 상황이 완화되었습니다. 이 제한은 이미 F# 3.1 이후부터 yield를 사용하지 않을 때에는 이러한 식에 꼭 필요한 것이 아니므로 기존 동작과의 일관성이 향상됩니다. RFC에서 이 기능에 대해 자세히 알아볼 수 있습니다.

목록 및 배열 대괄호에서 들여쓰기 허용

자체 줄에 있을 때 한 범위 앞으로 들여써야 했지만, 이제 F# 4.5에서는 목록 및 배열 대괄호에 대한 들여쓰기 규칙이 완화되었습니다. 이전 요구 사항은 늘 혼란을 주었으며, F# 초보자에게는 더욱 어려웠습니다. 뿐만 아니라 F# 시퀀스 식에 꼭 필요하지도 않습니다. 이제는 시퀀스 식과 동일한 상태로 배열 및 목록 식을 가져옵니다. RFC에서 이 기능에 대해 자세히 알아볼 수 있습니다.

공용으로 내보낸 열거형 사례

이제 F# 4.5에서는 C#이 열거형 사례를 내보내는 방식과 일치시키기 위해 모든 상황에서 열거형 사례를 공용으로 내보냅니다. 이렇게 하면 레이블 이름이 아닌 값을 내보냈던 F# 코드의 로그를 프로파일링 도구가 쉽게 분석할 수 있습니다. RFC에서 이 기능에 대해 자세히 알아볼 수 있습니다.

F# 컴파일러 개선

F# 4.5에서는 앞서 언급한 언어 기능 외에도 F# 컴파일러가 개선되었습니다. 여기에는 다음이 포함됩니다.

  • F# 컴파일러의 모든 할당을 최대 2.2% 제거하여 컴파일러 성능 작업을 개선했습니다(다양한 시나리오에서).
  • 구조체 기반 열거 가능 형식과 함께 yield!를 사용할 때 AccessViolatioNException이 발생하는 버그가 수정되었습니다.
  • 다시 FSharpFunc에서 상속할 수 있습니다.
  • .NET Core용 F#의 디버그 빌드에 대한 후속 호출이 기본적으로 비활성화됩니다. 릴리스에 대해 활성화되므로 데스크톱 F# 컴파일러와 일치합니다.
  • 출력 파일에 기록된 전이 어셈블리 참조를 제어할 수 있도록 F# 참조 정규화가 수정되었습니다. 따라서 .NET Core에서 동일한 어셈블리 리디렉션을 수행할 수 있습니다.
  • 인라인 함수에서 동적 호출을 사용하려고 시도할 때 사용되는 오류 메시지를 무시하는 버그가 수정되었습니다. 이제 이 오류 메시지가 전파됩니다.
  • 이제 F#는 프로젝트 파일에서 설정할 수 있는 WarningsNotAsErrors 플래그를 준수합니다.
  • 패턴 일치 분기가 동일한 오류 메시지 유형 조건을 반환하지 않는 경우 Isaac Abraham에 의해 더 친숙하게 업데이트되었습니다.
  • 오버로드된 메서드 구현이 없는 인터페이스 구현이 Steffen Forkmann에 의해 수정된 경우 내부 오류 버그입니다.
  • 컴파일러의 어휘 단계에서 일부 불필요한 배열 복사를 Gauthier Segay 씨가 제거했습니다.
  • 이제 F# 열거형의 불완전한 패턴 일치는 범위에 포함되지 않는 상황에 대한 예제를 제공하는 구체적인 경고를 생성하며, John Wostenberg 씨가 도와주셨습니다.
  • 이제 `#nowarn "2003"이 적용되며, Matthias Diitrich 씨가 도와주셨습니다.
  • C# 확장 메서드를 사용하면 F# 오버로드 확인이 실패할 수 있는 버그를 Steffen Forkmann 씨가 수정했습니다.
  • 내부 QueueList 데이터 구조 버그를 Steffen Forkmann 씨가 수정했습니다.
  • Steffen Forkmann, Eugene Auduchinok, ncave 씨가 다양한 소규모 최적화 및 코드 정리 작업을 도와주셨습니다.

F# Core Library 4.5.x

이제 F# Core Library에 추가된 다음 항목을 사용할 수 있습니다.

  • async { } 계산 식의 스택 추적을 개선하기 위해 엄청난 노력이 투입되었습니다. 이제 스택 추적의 사용자 코드 및 사용자 줄 번호를 볼 수 있습니다. RFC에서 이 기능에 대해 자세히 알아볼 수 있습니다.
  • System.FuncSystem.Action 오버로드를 입력하는 FuncConvert.FromFuncFuncConvert.FromAction API는 C#과의 상호 운용에 도움이 됩니다. RFC에서 이 기능에 대해 자세히 알아볼 수 있습니다.
  • ValueOption은 새로 제공되는 형식으로, 궁극적으로 활성 패턴의 성능 개선을 목표로 하는 최초의 향후 기능 집합입니다. RFC에서 이 기능에 대해 자세히 알아볼 수 있습니다.
  • TryGetValue은(는) 이제 F# 맵 형식의 새 멤버입니다. RFC에서 이 기능에 대해 자세히 알아볼 수 있습니다.
  • MailboxProcessor.TryReceive를 처음으로 호출하면 CPU 사용량이 높았던 문제를 수정했습니다.
  • 이제 bool 비교에 속도가 빠른 일반 비교가 사용되며, Vasily Kirichenko 씨가 도와주셨습니다.
  • Array.allPairs에 대한 요약 텍스트가 보다 정확하게 업데이트되었으며, Patrick McDonald 씨가 도와주셨습니다.

F# 도구 개선 사항

이 릴리스에서는 성능 향상 및 일부 새로운 편집기 기능과 같은 F# 도구의 현저한 개선 사항이 포함되어 있습니다. 늘 그렇듯이, F# 오픈 소스 커뮤니티에서 많은 도움을 주셨습니다. 다음은 주요 사항입니다.

  • 멀티 타기팅을 사용하는 프로젝트를 포함하여 모든 영식의 .NET SDK 스타일 프로젝트에 대한 IntelliSense 성능을 개선했습니다.
  • 매우 큰 파일에 대한 IntelliSense 성능을 분석하고 개선하기 위해 커뮤니티를 중심으로 Vasily Kirichenko, Steffen Forkmann, Gauthier Segay 씨가 많은 도움을 주셨습니다. 매우 큰 파일(코드 줄 10k+)에서 IntelliSense의 성능이 약 2배 빨라졌습니다.
  • 오래된 FSharp.Core에 대한 경고가(패키지가 설치되어도 표시되던) .NET SDK 스타일 프로젝트에 더 이상 존재하지 않습니다.
  • IntelliSense에서 . 뒤에 멤버에 대한 XML 설명서를 표시하는 도구 설명이 더 이상 10초 후에 시간 초과되지 않습니다.
  • 개체 생성자 인수에서 중단점을 설정할 수 없는 버그가 수정되었습니다.
  • 제네릭 매개 변수가 수정되면 이름이 바뀐 기호가 중복되는 버그가 수정되었습니다.
  • 이제 .NET Framework 템플릿(클래식 F# 템플릿)은 NET SDK F# 템플릿과 맞추기 위해 NuGet 패키지의 FSharp.Core를 사용합니다.
  • 이제 (), [], {}, [||][<>] 중괄호 쌍에 자동 트랜잭션 중괄호 완성을 사용할 수 있습니다. 이 작업은 Gibran Rosa 씨와 공동으로 진행되었습니다.
  • 이제 F# 기호에서 Ctrl + 클릭을 사용하여 정의로 이동할 수 있습니다. 이 제스처에 대한 설정 역시 도구 > 옵션 창에서 적용됩니다.
  • 다양한 IDE 기능에 대해 구식 형식 확인 정보를 구성할 수 있도록 IntelliSense 성능 UI가 수정되었습니다. 이제 각 옵션에 대한 설명이 설정의 도구 설명에 표시됩니다.
  • 이제 중괄호 일치 강조가 중괄호를 올바르게 강조하며, Vasily Kirichenko 씨와 협업으로 이 문제를 수정했습니다.
  • 이제 형식이 재귀적으로 정의될 때 정의로 이동이 올바르게 작동하며, Vasily Kirichenko 씨가 도와주셨습니다.
  • 파일의 윗부분이 비어 있으면 자동으로 가져온 네임스페이스가 열리지 않던 버그를 Vasily Kirichenko 씨가 수정했습니다.
  • 점이 포함된 printf 지정자의 색상이 잘못 표시되는 버그를 Vasily Kirichenko 씨가 수정했습니다.
  • 모든 열기가 재귀 모듈 내에서 미사용으로 간주되던 버그를 Vasily Kirichenko 씨가 수정했습니다.
  • 미사용 열기 분석기의 성능이 Vasily Kirichenko 씨의 손을 거쳐 크게 향상되었습니다.
  • 이제 특성에 대한 자동 완성은 실제로 특성인 옵션만 제안하며, Vasily Kirichenko 씨가 도와주셨습니다.
  • 이제 서명 도움말 도구 설명은 생성자 호출 사이트에서 형식 공급자 정적 매개 변수에 대해 생성되며, Vasily Kirichenko 씨가 도와주셨습니다.
  • 측정 단위로 사용되는 값 형식이 참조 형식 색상으로 표시되던 버그를 Vasily Kirichenko 씨가 수정했습니다.
  • 스크롤하는 동안 일부 파일에 대한 의미 체계 색 지정이 사라지는 버그를 Vasily Kirichenko 씨가 수정했습니다.
  • 이제 실험 CodeLens 구현이 있으며, Victor Peter Rouven Müller 씨가 도와주셨습니다. 옵션 > 텍스트 편집기 > F# > Code Lens에서 켤 수 있습니다.
  • F# 컴파일러 서비스가 XML 문서에서 모듈 이름을 올바르지 않게 생략하는 버그를 Sebastian Urban 씨가 수정했습니다.
  • ContainsKey 및 후속 Item 호출에 Dictionary를 사용하는 코드가 TryGetValue를 사용하도록 Eugene Auduchinok 씨에 의해 변경되었습니다.
  • Jakob Majoka 씨도 도구 설명에 다른 API를 사용하는 과정을 도와주셨습니다.

인프라, 패키징 및 오픈 소스 개선 사항

인프라, 패키징 및 오픈 소스 기여 환경이 다음과 같이 개선되었습니다.

  • Visual Studio를 사용하여 배포된 F# 컴파일러는 더 이상 F# 컴파일러 SDK 위치에 싱글톤으로 설치되지 않습니다. 이제 Visual Studio와 완전히 병렬입니다. 즉, Visual Studio의 병렬 설치가 드디어 진정한 병렬 F# 도구 및 언어 환경을 갖게 된다는 뜻입니다.
  • 이제 FSharp.Core NuGet 패키지가 서명됩니다.
  • ETW 로깅이 F# 도구 및 컴파일러에 추가되었습니다.
  • FSharp.Core의 매우 큰 control.fs/control.fsi 파일이 async.fs/async.fsi, event.fs/event.fsi, eventmodule.fs/eventmodule.fsi, mailbox.fs/mailbox.fsi, observable.fs/observable.fsi로 분할되었습니다.
  • 프로젝트 성능 스트레스 테스트 아티팩트의 .NET SDK 스타일 버전을 추가했습니다.
  • 코드베이스에서 Newtonsoft.json을 제거했으며, 따라서 OSS 기여자에 대해 다운로드되는 패키지가 하나 줄었습니다.
  • 이제 최신 버전의 System.Collections.Immutable 및 System.Reflection.Metadata를 사용합니다.

C++ 준수 및 도구 집합 개선

이 릴리스에서는 C++ 준수 및 도구 집합이 다음과 같이 개선되었습니다.

  • C++11 표준(C99 전처리기 포함)을 따르는 새로운 실험적 토큰 기반 전처리기, /experimental:preprocessor 스위치 사용. 기존의 전처리기를 사용하면 1로 정의되고 새로운 실험 표준 준수 전처리기를 사용하면 0으로 정의되는 _MSVC_TRADITIONAL 매크로를 사용하여 제어됩니다.
  • Visual Studio 개발자 명령 프롬프트는 Visual C++ Spectre 변형 1 완화 런타임(-vcvars_spectre_libs = spectre) 사용을 지원합니다. Spectre 완화에 대한 자세한 내용은 Visual C++ 팀 블로그를 참조하세요.
  • 최신 C++ 코드 생성에 초점을 맞춘 SSA 최적화 프로그램에 두 가지 기능 추가: 중복 저장소 제거 및 중복 분기 정리.
  • 링크 시간을 줄이기 위한 링커의 최적화된 메모리 매핑된 I/O 성능.

C++ 크로스 플랫폼 개발

이 릴리스에서는 C++ 크로스 플랫폼 개발에 다음과 같은 기능을 추가하고 개선했습니다.

  • 도구>옵션의 ClangFormat에 대해 지정된 코딩 규칙에 따라 .clang-format 파일을 생성하기 위한 추가>새 항목 템플릿을 추가했습니다. Visual Studio 규칙을 선택하면 생성된 파일은 도구 > 옵션에서 사용자의 현재 Visual Studio 서식 지정 구성을 매칭하려고 시도합니다.
  • 제공된 clang-format.exe 버전을 6.0.0으로 업데이트했습니다.
  • CppProperties.json에 구성을 간단하게 추가할 수 있는 템플릿.
  • CMakeSettings.json에 구성을 간단하게 추가할 수 있는 템플릿(그림 7)을 추가했습니다.
Configuration templates for CMake
(그림 7) CMake용 구성 템플릿

C++ 생산성

다음과 같이 C++ 생산성이 개선되었습니다.

  • 이제 매크로의 C++ 요약 정보 도구 설명은 단순한 정의 대신 확장 대상을 보여줍니다. 전처리기가 매크로 식별자를 무엇으로 대체하는지 명확하게 설명하므로 다른 매크로를 참조하는 복잡한 매크로에 특히 유용합니다.
  • 기본 매크로를 constexpr로 변환하는 새로운 빠른 픽스 전구를 코드를 현대화하기 위한 새로운 도구로 추가했습니다.
  • 템플릿에 대한 IntelliSense는 템플릿 본문 내에서 IntelliSense를 최대로 활용할 수 있도록 템플릿 인수에 대한 자세한 정보를 제공합니다(그림 8).
Template IntelliSense
(그림 8) 템플릿 IntelliSense
  • 코드 분석 환경을 개선하기 위해 노력하고 있습니다. 이제 도구>옵션>텍스트 편집기>C++>실험>코드 분석에서 개발 중인 새 기능을 사용할 수 있습니다. 파일이 열리거나 저장되고 오류 목록에 결과가 표시되고 편집기에서 녹색 물결선으로 표시되면 백그라운드에서 코드 분석을 실행할 수 있습니다(그림 9).
In-editor code analysis
(그림 9) 편집기에서 코드 분석

C++ 디버깅 기능 향상

다음과 같이 디버깅 기능을 개선했습니다.

  • 이제 내 코드만을 사용하면 호출-스택 창에서 해당 호출을 축소할 수 있을 뿐 아니라 시스템 또는 타사 C++ 라이브러리에서 코드를 건너뛸 수 있습니다. /JMC를 사용하여 코드를 컴파일하고 비 사용자 라이브러리 경로가 .natjmc 파일에 지정된 경우 C++ 라이브러리에 대한 이 동작을 제어할 수 있습니다. 시스템 라이브러리에서 사용자 코드를 호출하는 경우 사용자가 개입하면 디버거가 모든 시스템 코드를 건너뛰고 사용자 코드 콜백의 첫 번째 줄에서 중지합니다(그림 10).
Just My Code
(그림 10) 내 코드만
  • 이제 조사식, 간략한 조사식, 자동 및 로컬 창 내부에서 데이터 중단점을 설정할 수 있으므로 메모리에 저장된 값이 변경되면 짧은 클릭 몇 번으로 중단할 수 있습니다.
  • 링크 소스를 사용하면 컴파일하는 동안 실행 파일 또는 라이브러리의 원래 소스 코드를 PDB에 포함할 수 있습니다.
  • 이제 디버깅할 때 프로그램이 실행을 종료하면 기본적으로 콘솔 창이 열린 상태로 유지됩니다(디버거 없이 프로그램을 실행하는 것과 유사). 콘솔을 자동으로 닫도록 도구 > 옵션 > 디버깅 > 일반에서 이 동작을 다시 전환할 수 있습니다.

JavaScript 및 TypeScript 개선 사항

TypeScript 3.0

이제 Visual Studio 2017 버전 15.8에는 기본적으로 TypeScript 3.0을 포함합니다. 이 릴리스에 대한 자세한 내용은 TypeScript 3.0 릴리스 알림을 참조하세요.

향상된 Vue.js 지원

Vue.js 라이브러리에 대한 지원이 향상되었으며, 특히 "단일 파일 구성 요소"라고도 하는 .vue 파일을 지원합니다. 이렇게 하면 스크립트 요소의 lang="ts" 특성을 통해 TypeScript에서 작성된 스크립트 블록에 대한 지원을 비롯하여 .vue 파일 내에서 스크립트 블록을 편집하는 경우 향상된 기능을 제공합니다. (참고: .vue 파일을 런타임에 필요한 HTML 및 JS 파일로 변환하려면 WebPack 또는 유사한 방법을 사용하는 빌드 프로세스를 사용해야 합니다. 자세한 내용은 단일 파일 구성 요소 페이지를 참조하세요).

Node.js 워크로드가 설치된 경우 이제 새 프로젝트 대화 상자의 "JavaScript/Node.js" 또는 "TypeScript/Node.js" 경로 아래에 "기본 Vue.js 웹 애플리케이션" 템플릿이 있습니다. 다음은 .vue 파일 (그림 11)의 스크립트 블록 내에서 TypeScript 코드를 편집하는 예를 보여 줍니다.

Editing a .vue file
(그림 11) .vue 파일 편집

ESLint 개선 사항

이 릴리스에 대한 ESLint 지원을 다시 구현합니다. ESLint에는 다음과 같은 향상된 기능 및 고급 기능이 포함됩니다.

  • 이제 Visual Studio는 저장된 파일만 린트하는 것이 아니라 편집할 때 JavaScript 파일도 린트합니다.
  • 열려 있는 파일뿐만 아니라 프로젝트의 모든 JS 파일에 대해 결과를 보고할 수 있습니다. 프로젝트의 일부만 linted하지 않으려는 경우 .eslintignore 파일을 사용하여 무시해야 할 디렉터리와 파일을 지정할 수 있습니다.
  • ESLint는 기본적으로 ESLint 4를 사용하도록 업데이트되었지만 프로젝트에 ESLint의 로컬 설치가 있는 경우 해당 버전을 대신 사용합니다.

ESLint는 ** 도구 > 옵션 > 텍스트 편집기 > Javascript/Typescript > Linting ** (그림 12)에서 ESLint 사용 설정을 선택 취소하여 Visual Studio에서 전역적으로 사용하지 않도록 설정할 수 있습니다.

ESLint Options
(그림 12) ESLint 옵션

Node.js용 폴더 열기 기능 향상

"Node.js 워크로드"가 설치되어 있는 경우 폴더 열기 시나리오에서 JavaScript 및 TypeScript와 함께 작업할 때 많은 개선 사항이 있습니다. 예를 들어 NPM 패키지 관리, TypeScript 빌드, Node.exe로 시작 및 디버깅, NPM 스크립트 실행 및 단위 테스트 실행 등이 있습니다.

자세한 내용은 솔루션 또는 프로젝트 없이 Visual Studio에서 JavaScript 및 TypeScript 코드 개발을 참조하세요.

편집기 성능 개선

이전 릴리스에서는 모든 JavaScript 및 TypeScript 언어 서비스 작업이 단일 Node.js 프로세스에 의해 처리되었습니다. 이로 인해 잠재적으로 긴 작업(예: 오류에 대한 코드 분석)이 이미 진행 중일 때 사용자 입력에 영향을 주는 명령(예: 새줄 이후 자동 서식 지정)이 전송되면 편집기 지연이 발생할 수 있습니다. 이 문제를 완화하기 위해 편집에 가장 영향을 주는 작업에 대해 이제 별도의 프로세스가 사용됩니다. 이 프로세스는 기존 언어 서비스 프로세스보다 시스템 리소스에서 훨씬 가볍습니다. 그러나 새 프로세스를 사용하지 않도록 설정하려는 경우 도구 > 옵션 > 텍스트 편집기 > JavaScript/TypeScript > 언어 서비스에서 전용 구문 프로세스 사용 안 함 상자를 선택합니다.

Visual Studio Web Tools

Library Manager는 Visual Studio 2017에 포함된 새로운 기능입니다. 웹 프로젝트에서 클라이언트 쪽 라이브러리 관리를 도와줍니다.

컨테이너 도구

ASP.NET Core 웹 프로젝트를 위한 새로운 단일 프로젝트 Docker 컨테이너 환경을 추가했습니다. 기존 Docker Compose 기반 컨테이너 도구를 보완하는 컨테이너로, Visual Studio에서 바로 Docker 컨테이너를 만들고, 디버그하고, 빌드하는 간단하고 쉬운 방법을 제공합니다.

프로젝트를 만들 때 Docker 지원을 추가할 수 있습니다(그림 13).

Enable Docker Support
(그림 13) Docker 지원 사용

또는 솔루션 탐색기의 프로젝트 팝업 메뉴를 통해 기존 프로젝트에 Docker 지원을 사용하도록 설정할 수 있습니다(그림 14). 이렇게 하면 Visual Studio가 프로젝트에서 단일 Dockerfile을 만듭니다. Windows 또는 Linux 중에 선택할 수 있습니다.

Add Docker Support
(그림 14) Docker 지원 추가

Visual Studio는 컨테이너 내에서 실행되는 동안 프로젝트를 디버그할 수 있도록 Docker에 대한 디버거 실행 프로필(그림 15)도 추가합니다.

Docker Launch Profile
(그림 15) Docker 실행 프로필

여러 Docker 프로젝트가 포함된 솔루션이 있는 경우 기본적으로 솔루션을 시작하면 한 컨테이너만 실행됩니다. 여러 컨테이너를 동시에 실행하려면 솔루션 탐색기에서 솔루션을 마우스 오른쪽 단추로 클릭하고 시작 프로젝트 설정을 선택한 다음, 여러 시작 프로젝트를 선택하고 실행하려는 모든 프로젝트에 대해 작업 드롭다운을 시작 또는 디버깅하지 않고 시작으로 설정합니다.

컨테이너화된 프로젝트를 원하는 방식으로 실행한 후에는 프로젝트를 마우스 오른쪽 단추로 클릭하고, Docker 이미지 빌드를 선택하여 Azure Container Registry 또는 DockerHub에 푸시할 준비가 되면 로컬로 이미지를 빌드할 수 있습니다.

새로운 컨테이너 오케스트레이터 지원 옵션을 통해 기존 Docker Compose 기반 기능을 ASP.NET Core 웹 프로젝트에 추가할 수도 있습니다(그림 16). 솔루션 탐색기에서 ASP.NET Core 웹 프로젝트를 마우스 오른쪽 단추로 클릭하고, 추가 > 컨테이너 오케스트레이터 지원을 선택한 다음, 드롭다운 메뉴에서 Docker Compose를 선택합니다.

Add Container Orchestrator Support
(그림 16) 오케스트레이션 지원 추가

게시 개선 사항

이 릴리스에서는 다음과 같이 게시 기능이 향상되었습니다.

  • 이제 Docker 컨테이너를 컨테이너 레지스트리에 게시할 때 이미지의 태그를 사용자 지정할 수 있습니다. 태그를 수동으로 추가해도 되고(기본값은 "latest"), 각 태그의 고유하도록 자동으로 생성된 태그를 사용해도 됩니다.
  • 새로운 Azure App Service를 만들 때 자동으로 원격 분석 데이터를 수집하도록 Application Insights를 구성할 수도 있습니다. Application Insights가 있는 영역을 선택하면 기본적으로 Application Insights가 사용됩니다. Application Insights가 없는 영역을 선택하면 드롭다운 목록에서 Application Insights 리소스에 사용할 다른 지역을 수동으로 지정할 수 있습니다.
  • Azure Functions 프로젝트를 게시할 때 새로운 Run-From-Zip 기능을 사용하여 게시하도록 선택할 수 있습니다.

Visual Studio Tools for Xamarin

이 릴리스에서는 Xamarin이 다음과 같이 업데이트되었습니다.

  • Xcode 9.4 지원이 추가되었습니다.
  • 이제 새로운 Xamarin.Forms 프로젝트를 만들 때 기본 코드 공유 옵션은 .NET Standard입니다. 공유 프로젝트 옵션은 계속 제공됩니다.
  • Android 증분 빌드 기능을 개선했습니다. Xamarin.Android는 전체 빌드보다 빠른 증분 빌드를 달성하기 위해 중간 출력 디렉터리에 생성된 파일을 사용합니다. 이전에는 프로젝트의 대상 프레임워크를 변경하면 그 다음 실행에서 파일이 무효화되고 전체 빌드가 실행됩니다. 이 릴리스에서는 여러 대상 프레임워크 간에 전환할 수 있으면서도 증분 빌드의 이점을 계속 누릴 수 있도록 프레임워크별 폴더에 파일을 보관합니다. 프로젝트를 정리하면 보관된 파일이 사용하는 디스크 공간을 회수할 수 있습니다.
  • Visual Studio 2017의 Xamarin.Mac 바인딩 프로젝트에 대한 최소한의 지원을 추가했습니다. 이제 Visual Studio는 Xamarin.Mac 바인딩 프로젝트를 로드하고 지원되는 것으로 인식합니다. Xamarin.Mac 바인딩 프로젝트를 빌드할 수도 있습니다. 그러나 네이티브 Mac 도구 체인을 사용하지 않고 빌드 프로세스가 로컬로 수행되므로 생성된 IL 어셈블리를 앱에서 실행 또는 디버깅에 사용할 수 없습니다.

Hyper-V Android Emulator 지원

이 릴리스는 Windows 10 2018년 4월 업데이트에서 실행할 경우 Hyper-V와 호환되는 Google Android 에뮬레이터가 추가됩니다(그림 17). 그러면 Google의 Android 에뮬레이터를 다른 Hyper-V 가상 머신, Docker 도구, HoloLens 에뮬레이터 등과 함께 병렬로 사용할 수 있습니다. 이제 Hyper-V를 사용하는 모바일 앱 개발자는 항상 최신 Android API를 지원하는 빠른 Android 에뮬레이터에 액세스하고, Google Play 서비스를 즉시 사용하고, 카메라, 지리적 위치, 빠른 부팅을 포함한 모든 기능을 지원할 수 있습니다.

Screenshot of both the Google Android emulator and HoloLens emulator running at the same time.
(그림 17) Google Android 에뮬레이터 및 HoloLens 에뮬레이터

Xamarin.Android Designer

Xamarin.Android의 디자이너 환경이 대폭 개선되었습니다. 주요 기능은 다음과 같습니다.

  • 레이아웃을 동시에 만들고, 편집하고, 미리 볼 수 있는 분할 보기 편집기가 도입되었습니다(그림 18).
Screenshot of the Xamarin.Android split-view editor.
(그림 18) Xamarin.Android 분할 보기 편집기
  • IntelliSense 환경 및 사용자 지정 컨트롤의 안정성이 향상되었습니다.
  • 시스템에서 제공한 값의 샘플 데이터를 지원합니다.

Xamarin.Forms 미리 보기

이제 Xamarin.Forms 버전 3.1.0.583944 이상을 사용하면 Xamarin.Forms 미리 보기에서 도구 상자가 지원됩니다. 도구 상자를 처음 접하는 분들도 쉽게 찾을 수 있도록 Xamarin.Forms 컨트롤이 도구 상자에 표시됩니다. 컨트롤을 XAML 코드 편집기로 끌어다 놓아 페이지에 컨트롤을 추가할 수도 있습니다. Xamarin.Forms 미리 보기는 이제 XAML 편집기의 일부입니다. 편집기 창의 가장자리에 있는 확장 아이콘을 사용하여 여닫을 수 있습니다.

Python

이 릴리스에서는 Python 개발자를 위해 다음과 같은 향상된 기능이 추가되었습니다.

  • 이제 Python IntelliSense는 typeshed 정의를 사용하여 정적 분석을 통해 자동 완성을 유추할 수 없는 라이브러리에 대한 다양한 결과를 제공합니다.
  • 15.7 미리 보기 릴리스에서 처음 발표된 실험 디버거는 이제 Python의 기본 디버그 엔진으로 사용되며, Python 코드에 대한 보다 빠르고 안정적인 디버깅을 제공합니다.
  • 연결, 프로파일링 및 혼합 모드(언어 간) 디버깅 기능을 사용하기 위한 픽스를 포함하여 Python 3.7 지원을 추가했습니다.
  • 위의 기능에 대한 자세한 내용은 Visual Studio 2017 버전 15.8의 Python 블로그 게시물에서 확인하세요.

로컬 Azure Function 설정 마이그레이션

[게시] 요약 페이지에서 사용할 수 있는 "관리되는 애플리케이션 설정" 대화 상자가 이제 local.settings.json 파일의 값을 표시하고, 값을 Azure에 호스트되는 원격 Azure 함수 앱으로 마이그레이션할 수 있습니다.

연결된 서비스

이제 Azure 함수 프로젝트를 사용하여 솔루션에 대한 Visual Studio 2017에서 바로 Azure 함수에 대한 지속적인 업데이트를 구성할 수 있습니다.

테스트 탐색기 개선

이제 계층 구조 보기에서 그룹 중 하나를 선택하면 테스트 탐색기가 보다 유용한 테스트 상태 요약 창(테스트 탐색기의 아래쪽 창)을 표시합니다. 이 창에는 해당 그룹에서 실패한 테스트 수, 통과한 테스트 수 또는 실행되지 않은 테스트 수가 표시됩니다.

새로운 확장성 기능

언어 서버 프로토콜

이제 Visual Studio는 언어 서버 프로토콜을 기본적으로 지원합니다. 확장 작성자는 기존 언어 서버와 통신하여 Visual Studio에 추가 언어 지원을 추가하는 확장 프로그램을 만들 수 있습니다. 확장 사용자는 이러한 확장을 설치하여 Visual Studio 내부에서 Rust 등의 선호하는 언어를 사용할 수 있습니다.

AsyncPackage 템플릿

이제 확장 작성자는 항목 템플릿을 사용하여 확장의 성능을 최적화하는 AsyncPackage를 만들 수 있습니다. AsyncPackages에 대해 자세히 알아보세요.

확장 팩

확장 팩을 사용하여 선호하는 확장 집합을 간편하게 공유하거나 모든 확장이 포함된 Visual Studio를 새로 설치할 수 있습니다. 확장 팩을 사용하면 확장 목록을 만들고, 확장 하나에 패키징하고, 확장을 신속하게 대량으로 설치하는 데 사용할 수 있습니다.

명령줄 확장 게시

명령줄을 사용하여 Visual Studio Marketplace에 확장을 게시할 수 있습니다.

.NET Core SDK 2.1.400

Visual Studio 2017 버전 15.8에는 .NET Core SDK 2.1.400이 포함되어 있습니다. 다음과 같은 새로운 SDK 기능이 제공됩니다.

  • NUnit 템플릿 추가
  • 서명된 글로벌 도구에 대한 지원 추가
  • 명확성을 높이기 위해 도움말 텍스트 개선

.NET Core CLI에 대한 32개 문제가 종결되었습니다.
.NET Core SDK에 대한 20개 문제가 종결되었습니다.

소스 제어

.NET Core 프로젝트의 경우 이제는 솔루션을 다시 로드할 필요 없이 파일 탐색기를 통해 프로젝트에 직접 추가된 파일이 솔루션 탐색기에서 올바른 Git 및 TFS 추적 아이콘을 표시합니다.

.NET 테스트 어댑터 확장

.NET 테스트 어댑터는 다음과 같이 호환성이 손상되는 변경 및 사용 중단이 있습니다.

  • 호환성이 손상되는 변경: 모든 테스트 프로젝트는 csproj에 .NET 테스트 어댑터 NuGet 참조를 포함해야 합니다. 그렇지 않으면 빌드 후 테스트 어댑터 확장에서 검색이 시작되거나 사용자가 선택한 테스트를 실행하려고 하면 이 테스트 출력이 프로젝트에 표시됩니다.
    • 테스트 프로젝트{<테스트 프로젝트의 전체 경로>}는 .NET NuGet 어댑터를 참조하지 않습니다. 이 프로젝트에서는 테스트 검색 또는 실행이 작동하지 않을 수 있습니다. 솔루션의 각 테스트 프로젝트에서 NuGet 테스트 어댑터를 참조하는 것이 좋습니다.
  • .NET 테스트 프레임워크는 NuGet 패키지에서 어댑터를 릴리스하고 Visual Studio 확장에서 벗어나고 있습니다. 확장을 통해 제공되는 .NET 테스트 어댑터 지원은 중단되었지만 계속 지원됩니다. 즉, 도구 > 옵션 > 테스트에서 새로운 두 가지 옵션을 사용할 수 있습니다.
    • 첫 번째 옵션을 선택하면 Visual Studio가 테스트 어셈블리 폴더(테스트 어댑터 NuGet 참조로 채워진)에서 찾은 테스트 어댑터만 사용하거나 runsettings 파일에 지정된 대로 사용할 수 있습니다.
    • 두 번째 옵션을 선택하면 Visual Studio가 이전 동작을 "대체"하고 테스트 어댑터 NuGet 참조가 없는 프로젝트의 테스트 어댑터 확장을 검색할 수 있습니다. 두 옵션 모두 기본적으로 선택되므로 이 릴리스에서는 기본 동작이 변경되지 않습니다.
  • 참고: .NET이 아닌 테스트 어댑터는 이 변경의 영향을 받지 않습니다.

.NET Framework 비밀 지원 ASP.NET

.NET Framework 4.7.1 이상을 대상으로 하는 ASP.NET .NET Framework 프로젝트의 경우, 이제 프로젝트를 마우스 오른쪽 단추로 클릭하고 "관리되는 사용자 비밀"을 선택하여 usersecrets.xml의 소스 코드에서 원하지 않는 비밀 정보를 열고 저장할 수 있습니다.

.NET Framework 성능 ASP.NET 향상

참조된 .NET 컴파일러 패키지가 ASP.NET .NET Framework 프로젝트에서 만료된 경우 Visual Studio에서는 빌드 성능을 개선하도록 프로젝트를 열 때 패키지를 업그레이드하라는 메시지를 표시합니다.

.NET Framework 4.7.2

이제 Visual Studio 2017 버전 15.8에서는 4.7.2 런타임이 포함된 모든 지원되는 플랫폼에 대한 .NET Framework 4.7.2 개발 도구를 제공합니다. .NET Framework 4.7.2에서는 여러 새로운 기능 및 개선 사항뿐 아니라 신뢰성, 안정성, 보안, 성능과 관련한 많은 수정 사항을 제공합니다.

.NET Framework 4.7.2에 대한 자세한 내용은 다음 문서를 참조하세요.

지연 패키지 로드

이제 Visual Studio는 Visual Studio IDE가 완전히 시작되고 솔루션이 로드된 후에 자동으로 로드되도록 구성된 비동기 패키지의 로드를 지연합니다. 이 변경 내용은 동기적으로 자동 로드되는 패키지에 영향을 주지 않습니다. 사용자는 상태 표시줄의 왼쪽 아래 모서리에 있는 작업 상태 센터를 살펴보면서 진행률을 모니터링할 수 있습니다. asyncpackage를 만드는 확장 작성자는 자신의 확장을 테스트해야 합니다. 자세한 내용은 확장의 자동 로드 동작을 업데이트하여 중요한 시나리오의 응답성 향상을 참조하세요.


---

Release Notes Icon Visual Studio 2017 버전 15.8 보안 권고 알림

Visual Studio 2017 버전 15.8.7 서비스 릴리스-- 릴리스 날짜: 2018년 10월 10일

CVE-2018-8292 .NET Core 정보 공개 취약성

HTTP 인증 정보가 HTTP 리디렉션이 발생하는 아웃바운드 요청에 실수로 노출된 경우 .NET Core에서 보안 기능 바이패스 취약성이 발생하게 됩니다. 이 취약성을 악용하는 공격자는 이 정보를 사용하여 웹 애플리케이션을 추가로 손상시킬 수 있습니다. 보안 업데이트는 .NET Core 애플리케이션이 HTTP 리디렉션을 처리하는 방법을 수정하여 취약성을 해결합니다.

Visual Studio 2017 버전 15.8.4 서비스 릴리스-- 2018년 9월 11일 릴리스

CVE-2018-8409 .NET Core 서비스 거부 취약성

System.IO.Pipelines가 요청을 잘못 처리하는 경우 .NET Core 2.1에 서비스 거부 취약성이 존재합니다. 이 취약성을 악용하는 공격자는 System.IO.Pipelines를 활용하는 애플리케이션에 대한 서비스 거부로 이어질 수 있습니다. 취약성은 인증 없이 원격으로 악용될 수 있습니다. 인증되지 않은 원격 공격자가 애플리케이션에 특별히 구성된 요청을 제공하여 이 취약성을 악용할 수 있습니다.

CVE-2018-8409 ASP.NET Core 서비스 거부 취약성

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

Visual Studio 2017 버전 15.8-- 릴리스 날짜: 2018년 8월 14일

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

Visual Studio 서비스에는 권한 상승 취약성이 있으며, 이로 인해 파일을 쓸 때 관리자가 아닌 사용자가 시스템 권한을 가질 수 있습니다. 이를 활용하는 공격자는 사용자 수준 액세스 권한만 있는 상태에서 시스템으로 파일을 작성할 수 있습니다. 이 보안 업데이트는 현재 사용자로 가장하여 파일 위치에 대한 액세스의 유효성을 검사하여 이 문제를 해결합니다.

Visual Studio 2017 버전 15.8 미리 보기 4 -- 2018년 7월 10일에 릴리스됨

CVE-2018-8172 Visual Studio 원격 코드 실행 취약성

특별히 구성된 프로젝트 또는 리소스 파일을 열어 사용자 컴퓨터의 악용으로 이어질 수 있는 원격 코드 실행 취약성입니다. 보안 업데이트는 Visual Studio에서 파일의 원본 태그를 확인하는 방법을 수정하여 취약성을 해결합니다.

CVE-2018-8260 .NET Framework 원격 코드 실행 취약성

원격 코드 실행 취약성은 공격자가 현재 사용자의 컨텍스트에서 임의 코드를 실행하도록 허용하여 사용자 머신의 악용으로 이어질 수 있는 .NET 소프트웨어에 존재합니다. 보안 업데이트는 .NET에서 파일의 원본 태그를 확인하는 방법을 수정하여 취약성을 해결합니다.

CVE-2018-8232 .NET Microsoft Macro Assembler 변조 취약성

Microsoft Macro Assembler 부적절한 코드 유효성 검사와 관련된 변조 취약성입니다. 보안 업데이트는 Microsoft Macro Assembler에서 코드 논리의 유효성을 올바르게 검사하여 취약성을 해결합니다.

CVE-2018-8171 ASP.NET Core 보안 기능 우회 취약성

ASP.NET Core 보안 기능 우회 취약성은 공격자의 무한 인증 시도로 이어질 수 있는 잘못된 로그인 시도 횟수의 유효성이 검사되지 않는 경우 존재합니다. 업데이트는 잘못된 로그인 시도 횟수의 유효성을 검사하여 취약성을 해결합니다.

Visual Studio 2017 버전 15.8 미리 보기 3 -- 2018년 6월 26일에 릴리스됨

CVE-2018-11235 Git 보안 취약성에 대한 Microsoft 보안 권고

Git 커뮤니티에 공개된 Git 보안 취약성을 해결했습니다. 취약성으로 인해 사용자가 악성 리포지토리를 복제할 때 임의의 코드가 실행될 수 있습니다.

Visual Studio 2017 버전 15.8 미리 보기 1 -- 2018년 5월 8일에 릴리스됨

CVE-2018-0765 .NET Core 서비스 거부 취약성에 대한 Microsoft 보안 권고

  • Microsoft는 .NET Core 및 .NET 네이티브 버전 2.0의 취약점에 대한 정보를 제공하기 위해 이 보안 권고를 릴리스합니다. 이 권고는 또한 개발자가 이 취약점을 제거하기 위해 자신의 애플리케이션을 업데이트할 수 있는 지침을 제공합니다.
  • Microsoft는 .NET Framework 및 .NET Core가 부적절하게 XML 문서를 처리하는 경우 발생하는 서비스 거부 취약점을 알고 있습니다. 이 취약점을 악용하는 공격자는 .NET Framework, .NET Core 또는 .NET 네이티브 애플리케이션에 대한 서비스 거부로 이어질 수 있습니다.
  • 업데이트는 .NET Framework, .NET Core 및 .NET 네이티브 애플리케이션에서 XML 문서를 처리하는 방법을 수정하여 취약점을 해결합니다.
  • 사용자 애플리케이션이 ASP.NET Core 애플리케이션인 경우 개발자에게는 ASP.NET Core 2.0.8로 업데이트가 권고됩니다.

Release Notes IconVisual Studio 2017 버전 15.8.1

릴리스 날짜: 2018년 8월 17일

15.8.1에서 해결된 주요 문제

다음은 15.8.1에서 해결된 문제입니다.

  • 웹 프로젝트를 디버깅하는 동안 브라우저 창이 닫힐 때 Visual Studio가 예기치 않게 종료되는 문제를 해결했습니다.

Release Notes IconVisual Studio 2017 버전 15.8.2

릴리스 날짜: 2018년 8월 28일

15.8.2에서 해결된 주요 문제

고객이 보고한 문제 중 15.8.2에서 해결된 문제는 다음과 같습니다.


Release Notes IconVisual Studio 2017 버전 15.8.3

릴리스 날짜: 2018년 9월 6일

15.8.3에서 해결된 주요 문제

고객이 보고한 문제 중 15.8.3에서 해결된 문제는 다음과 같습니다.


Release Notes IconVisual Studio 2017 버전 15.8.4

릴리스 날짜: 2018년 9월 11일

15.8.4에서 해결된 주요 문제

고객이 보고한 문제 중 15.8.4에서 해결된 문제는 다음과 같습니다.

보안 공지 알림


Release Notes IconVisual Studio 2017 버전 15.8.5

릴리스된 날짜: 2018년 9월 20일

15.8.5의 새로운 기능에 대한 요약

  • Visual Studio Tools for Xamarin은 이제 Xcode 10을 지원합니다.

15.8.5에서 해결된 주요 문제

고객이 보고한 문제 중 15.8.5에서 해결된 문제는 다음과 같습니다.

15.8.5의 새로운 기능에 대한 세부 정보

Visual Studio Tools for Xamarin

이제 Visual Studio Tools for Xamarin은 iOS 12, tvOS 12 및 watchOS 5용 앱을 빌드하고 디버그할 수 있게 해주는 Xcode 10을 지원합니다. 사용 가능한 새 기능에 대한 자세한 내용은 iOS 12를 준비하는 방법iOS 12에 대한 소개를 참조하세요.


Release Notes IconVisual Studio 2017 버전 15.8.6

릴리스 날짜: 2018년 10월 2일

15.8.6의 새로운 기능에 대한 요약

15.8.6에서 해결된 주요 문제

고객이 보고한 문제 중 15.8.6에서 해결된 문제는 다음과 같습니다.

15.8.6의 새로운 기능에 대한 세부 정보

유니버설 Windows 플랫폼 개발자용 최신 Windows 10 SDK

최신 Windows 10 SDK(빌드 17763)는 유니버설 Windows 플랫폼 개발 워크로드에 대한 선택적 구성 요소로 사용할 수 있습니다. Windows 10 SDK(10.0.17763.0) 확인란을 선택하여 이 SDK를 워크로드에 추가할 수 있습니다.


Release Notes IconVisual Studio 2017 버전 15.8.7

릴리스 날짜: 2018년 10월 10일

15.8.7의 새로운 기능

Azure DevOps

Visual Studio Team Services는 이제 Azure DevOps입니다. 팀 탐색기 및 Visual Studio의 참조에서 이 새로운 브랜딩을 확인할 수 있습니다.

보안 공지 알림

CVE-2018-8292 .NET Core 정보 공개 취약성


Release Notes IconVisual Studio 2017 버전15.8.8

릴리스 날짜: 2018년 10월 24일

15.8.8에서 해결된 주요 문제

고객이 보고한 문제 중 15.8.8에서 해결된 문제는 다음과 같습니다.


Release Notes IconVisual Studio 2017 버전 15.8.9

릴리스된 날짜: 2018년 11월 2일

15.8.9에서 해결된 주요 문제

고객이 보고한 문제 중 15.8.9에서 해결된 문제는 다음과 같습니다.


알려진 문제

알려진 기존 문제 및 Visual Studio 2017 버전 15.8에서 사용 가능한 해결 방법을 모두 참조하세요.

Visual Studio 2017 Known Issues


피드백 및 제안

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


Blogs

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

Developer Tools Blogs


Visual Studio 2017 릴리스 정보 기록

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


맨 위로 이동