다음을 통해 공유


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

비고

지원되는 Visual Studio 2017 버전은 버전 15.9입니다.

중요합니다

이것은 최신 버전의 Visual Studio가 아닙니다. 최신 릴리스를 다운로드하려면 https://visualstudio.microsoft.com/downloads/ 참조 하세요.

Visual Studio 블로그

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

Visual Studio 2017 버전 15.8 릴리스

중요합니다

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

15.8의 주목할 만한 새로운 기능 요약

15.8에서 해결된 주요 문제

다음은 15.8에서 해결된 고객이 보고한 문제입니다.

Visual Studio 2017 버전 15.8에서 해결된 고객이 보고한 모든 문제를 참조하세요.

개발자 커뮤니티 포털


15.8의 새로운 기능 세부 정보

릴리스 정보 아이콘 Visual Studio 2017 버전 15.8.0

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

15.8의 새로운 기능

Install

이제 설치를 시작하기 전에 모든 설치 파일을 다운로드할 수 있는 옵션이 제공됩니다.

  • 이 새 옵션을 사용하려면 설치 관리자에서 "모두 다운로드한 다음 설치" 옵션을 선택합니다 (그림 1). 인터넷 연결 속도가 느린 경우 이 옵션을 사용하는 것이 좋습니다.
  • 기본 옵션은 병렬로 다운로드하고 설치하는 "다운로드하는 동안 설치"로 유지됩니다.
Otion 다운로드
(그림 1) 다운로드 옵션

Performance

이 릴리스에는 다음과 같은 성능 향상이 포함되어 있습니다.

  • C#, VB 및 C++ 프로젝트에 대한 분기 전환은 솔루션 다시 로드가 더 이상 필요하지 않으므로 대규모 솔루션의 경우 훨씬 더 빠릅니다.
  • 대규모 솔루션에서 작은 C# 및 VB 프로젝트 집합을 언로드하고 다시 로드하는 시간을 분에서 몇 초로 단축했습니다.
  • 특정 형식의 파일 또는 디자이너를 다시 열면 솔루션 로드가 지연 될 수 있으므로 이전 세션에서 열려 있는 문서를 다시 열지 않도록 설정하는 옵션이 추가되었습니다.
    • 도구 > 옵션 > 프로젝트 > 솔루션 일반에서 이 옵션을 전환합니다>.

성능 테스트

여러 테스트 프로젝트가 있는 대규모 솔루션에서 몇 가지 테스트를 실행할 때 성능이 크게 향상되었습니다. 랩에서 MSTest가 10,000개가 넘는 솔루션은 최대 82개의% 빠른 단일 테스트를 실행했습니다.

Visual Basic 성능 향상

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

성능 프로파일링

이 릴리스에는 다음과 같은 성능 프로파일링 향상 기능이 포함되어 있습니다.

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

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

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

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

      CPU 사용량 도구 모니터링 보기
      (그림 3) CPU 사용률 그래프
  • .NET 개체 할당 추적 도구를 추가했습니다.

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

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

이 릴리스에는 성능 프로파일러( ALT-F2를 통해 사용 가능)의 CPU 사용량 도구에 대한 다음과 같은 개선 사항이 포함되어 있습니다.

  • 이제 호출 트리 보기는 기본적으로 논리 호출 스택별로 비동기 실행을 표시합니다. 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 + UpArrow)으로 이동하면 바깥쪽 코드 블록의 시작 부분으로 빠르게 이동할 수 있습니다.
    • 다음/이전 문제(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 릴리스 채널에서 개발할 수 있습니다.

    디버그 인스턴스 선택
    (그림 5) 디버그 인스턴스 선택
  • 이제 게시 요약 페이지에서 직접 스냅샷 디버거를 연결할 수 있습니다 (그림 6).

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

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

Windows 10 Fall Creators Update(빌드 16299) 이상의 대상 플랫폼 버전으로 유니버설 Windows 플랫폼을 대상으로 하는 프로젝트에 대해 XAML 디자이너를 많이 개선했습니다. 이러한 개선 사항은 다음과 같습니다.

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

F# 4.5 및 F# Tools for Visual Studio

이 릴리스에서는 F# 언어 버전 4.5를 도입했습니다. 이는 FSharp.Core(F# 코어 라이브러리)의 새 4.5.x 제품군에도 해당합니다. F# RFC 리포지토리에서 이러한 각 변경 내용에 대한 사양을 읽을 수 있습니다. 또한 이 릴리스에서는 Visual Studio용 F# 도구가 많이 개선되었습니다.

F# 4.5

다음은 F# 언어 버전 4.5의 몇 가지 주요 사항입니다.

Span'T<> 지원

F#에서 , 및 유사 구문을 사용하여 API를 효과적으로 사용하고 Span<'T>Span프로덕션할 수 있도록 기능과 Memory관련 기능을 구현 ref 했습니다. 이에 대한 기능은 다음과 같습니다.

  • voidptr 형식입니다.
  • FSharp.Core의 새 NativePtr.ofVoidPtr 기능 및 NativePtr.toVoidPtr 함수입니다.
  • 각각 읽기 전용 바이리프 및 쓰기 전용 바이레프인 새 형식 inref<'T>outref<'T>및 이는 C#에 해당 in ref 합니다 out ref .
  • 구조체(예: ByRefLikeSpan)를 생성하는 ReadOnlySpan 기능입니다.
  • 구조체를 생성하는 IsReadOnly 기능입니다.
  • 메서드에서 - 및 byref-반환의 inref암시적 역참조입니다.
  • 에서 확장 멤버byref/inref/outref를 생성하는 기능입니다.

이 기능 집합은 반환되는 함수, 메서드 및 속성byref이 반환 값을 암시적으로 역참조하지 않은 F# 4.1에서 -returns의 초기 디자인byref에서 버그를 수정합니다. C#에서 -returns를 처리하는 방법과 함께 기능을 인라인으로 가져오도록 이 변경을 수행합니다 ref. 형식 주석이 - 반환의 ref암시적 역참조가 사용되었음을 나타내는 경우 오류 메시지가 사용됩니다.

또한 이 기능 집합은 "잘못된 구조체 교체"가 가능한 F# 컴파일러의 버그도 수정합니다. 즉, F# 구조체에서 메서드를 호출하면 호출된 실제 구조체를 다른 구조체로 바꿀 수 있습니다. this 구조체의 매개 변수는 이제 구조체를 inref<MyStruct>수정하려는 경우 변경 가능한 필드를 추가하도록 제안하는 오류와 함께 간주됩니다.

이 기능 집합에 대한 span의 구문 및 ref유사 구문에 대해 자세히 알아볼 수 있습니다.

성냥! 계산 식에서

F# 4.5에서는 match!계산 식 내에서 사용하기 위한 새로운 키워드인 John Wostenberg가 전적으로 기여했습니다. 이 구문 설탕은 결과 다음에 오는 것과 같습니다 let!match . 에 대한 match!RFC에서 자세히 알아볼 수 있습니다.

시퀀스, 목록 및 배열 식을 사용하여 업캐스트 yield 해야 하는 필요성 완화

이제 F# 4.5는 하위 형식을 슈퍼 형식으로 변환하기 위해 사용할 yield 때 업캐스트가 필요한 경우를 완화합니다. 이 제한은 F# 3.1을 사용하지 않을 때 이러한 식에 필요하지 yield으므로 기존 동작과 더 일치합니다. 이 기능에 대한 자세한 내용은 RFC 에서 확인할 수 있습니다.

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

이제 F# 4.5는 목록 및 배열 대괄호에 대한 들여쓰기 규칙을 완화하여 자신의 줄에 있을 때 한 범위 앞으로 들여쓰기를 요구했습니다. 이 이전 요구 사항은 특히 초보자가 F #을 사용하는 경우 항상 매우 혼란스러웠습니다. 또한 F# 시퀀스 식에는 필요하지 않습니다. 이제 배열 및 목록 식을 시퀀스 식과 동일한 일관된 상태로 가져옵니다. 이 기능에 대한 자세한 내용은 RFC 에서 확인할 수 있습니다.

public으로 내보낸 열거형 사례

이제 F# 4.5는 C#이 열거형 사례를 내보내는 방식에 맞게 모든 상황에서 열거형 사례를 공용으로 내보낸다. 또한 프로파일링 도구를 통해 레이블 이름이 아닌 값이 내보내진 F# 코드에서 로그를 쉽게 분석할 수 있습니다. 이 기능에 대한 자세한 내용은 RFC 에서 확인할 수 있습니다.

F# 컴파일러 개선 사항

이전에 언급한 언어 기능 외에도 F# 컴파일러의 향상된 기능은 F# 4.5에 있습니다. 여기에는 다음이 포함됩니다.

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

F# 코어 라이브러리 4.5.x

이제 F# 코어 라이브러리에 다음과 같은 추가 기능을 사용할 수 있습니다.

  • 계산 식에 대한 스택 추적을 개선하기 위해 async { } 상당한 작업이 수행되었습니다. 이제 스택 추적에서 사용자 코드 및 사용자 줄 번호를 볼 수 있습니다. 이 기능에 대한 자세한 내용은 RFC 에서 확인할 수 있습니다.
  • FuncConvert.FromFunc C FuncConvert.FromAction #과의 상호 운용에 도움이 되도록 형식 System.FuncSystem.Action 오버로드하는 API와 이 기능에 대한 자세한 내용은 RFC 에서 확인할 수 있습니다.
  • ValueOption 는 활성 패턴의 성능 향상을 목표로 하는 향후 기능 집합 중 첫 번째인 사용 가능한 새 형식입니다. 이 기능에 대한 자세한 내용은 RFC 에서 확인할 수 있습니다.
  • TryGetValue 는 이제 F# 맵 형식의 새 멤버입니다. 이 기능에 대한 자세한 내용은 RFC 에서 확인할 수 있습니다.
  • 첫 번째 호출 시 높은 CPU 사용량을 수정했습니다 MailboxProcessor.TryReceive.
  • 지금 비교는 bool바실리 키리첸코에 의해 기여 빠른 일반 비교를 사용합니다.
  • 요약 텍스트 Array.allPairs 가 올바르게 업데이트되었습니다. 패트릭 맥도날드가 기여했습니다.

F# 도구 개선 사항

성능 향상 및 일부 새로운 편집기 기능과 같은 F# 도구의 상당한 개선 사항이 이 릴리스에 포함되어 있습니다. 언제나처럼 F# 오픈 소스 커뮤니티에서 많은 수의 기여가 있습니다. 주요 내용은 다음과 같습니다.

  • 다중 대상 지정을 사용하는 폼을 포함하여 모든 양식의 .NET SDK 스타일 프로젝트에 대한 IntelliSense 성능을 향상시켰습니다.
  • 매우 큰 파일에 대한 IntelliSense 성능을 분석하고 개선하기 위한 커뮤니티 기반의 노력은 Vasily Kirichenko, Steffen ForkmannGauthier Segay에 의해 기여되었습니다. 매우 큰 파일(10k+ 코드 줄)의 IntelliSense는 현재 약 두 배 빠릅니다.
  • 패키지가 설치되어 있음에도 불구하고 오래된 FSharp.Core에 대한 경고는 .NET SDK 스타일 프로젝트에 더 이상 존재하지 않습니다.
  • IntelliSense에서 10초 후에 . 멤버에 대한 XML 설명서를 표시하는 설명 도구 설명이 더 이상 시간 초과되지 않습니다.
  • 개체 생성자 인수에서 중단점을 설정할 수 없는 버그가 수정되었습니다.
  • 제네릭 매개 변수인 경우 이름이 바뀐 기호가 중복되는 버그가 수정되었습니다.
  • .NET Framework용 템플릿(클래식 F# 템플릿)은 이제 NuGet 패키지의 FSharp.Core를 사용하여 .NET SDK F# 템플릿에 맞춥니다.
  • 이제 자동 트랜잭션 중괄호 완성을 , (), []{}[||] 중괄호 쌍에 [<>]사용할 수 있습니다. 우리는 지브란 로사와 공동으로이 작업을했다.
  • 이제 Ctrl+ F# 기호를 클릭하여 정의로 갈 수 있습니다. 이 제스처에 대한 설정은 도구 > 옵션 창에서도 적용됩니다.
  • IntelliSense 성능 UI는 다양한 IDE 기능에 대한 부실 형식 검사 정보의 구성을 허용하도록 수정되었습니다. 각 옵션에 대한 설명은 이제 설정에 대한 도구 설명에 있습니다.
  • 중괄호 일치 강조 표시는 이제 바실리 키리첸코와 공동으로 완료된 중괄호를 올바르게 강조 표시합니다.
  • 이제 정의로 이동하면 바실리 키리첸코가 제공한 형식이 재귀적으로 정의될 때 올바르게 탐색됩니다.
  • 파일의 맨 위가 비어 있을 때 자동 가져온 네임스페이스가 열리지 않은 버그가 Vasily Kirichenko에 의해 수정되었습니다.
  • printf에 의해 점이 포함된 지정자가 잘못 칠해진 버그 가 수정되었습니다.
  • 모든 열기가 재귀 모듈 내부에서 사용되지 않는 것으로 간주되는 버그는 Vasily Kirichenko에 의해 수정되었습니다.
  • 바실리 키리첸코에 의해 사용되지 않는 오픈 분석기의 성능이 크게 향상되었습니다.
  • 특성에 대한 자동 완성은 이제 Vasily Kirichenko가 기여한 실제로 특성인 옵션만 제안합니다.
  • 서명 도움말 도구 설명은 이제 Vasily Kirichenko가 제공한 생성자 호출 사이트에서 형식 공급자 정적 매개 변수에 대해 생성됩니다.
  • 측정 단위로 사용되는 값 형식이 참조 형식으로 색이 지정된 버그가 Vasily Kirichenko에 의해 수정되었습니다.
  • 스크롤하는 동안 일부 파일에 대해 의미 체계 색 지정이 사라질 수 있는 버그가 Vasily Kirichenko에 의해 수정되었습니다.
  • 이제 빅터 피터 루븐 뮬러가 기여한 실험적인 CodeLens 구현이 있습니다. 옵션 > 텍스트 편집기 > F# > 코드 렌즈에서 설정할 수 있습니다.
  • F# 컴파일러 서비스가 XML 설명서의 모듈 이름을 잘못 제외하는 버그가 Sebastian Urban에 의해 수정되었습니다.
  • Dictionary)에 의해 사용 및 후속 ContainsKey 호출을 사용하는 ItemTryGetValue코드가 변경되었습니다.
  • 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.fsievent.fs/event.fsi , eventmodule.fs/eventmodule.fsimailbox.fs/mailbox.fsi .로 observable.fs/observable.fsi분할되었습니다.
  • 프로젝트 성능 스트레스 테스트 아티팩트의 .NET SDK 스타일 버전을 추가했습니다.
  • 코드베이스에서 Newtonsoft.json 제거했으며, 이제 OSS 참가자를 위해 패키지가 하나 더 적게 다운로드되었습니다.
  • 이제 최신 버전의 System.Collections.Immutable 및 System.Reflection.Metadata를 사용합니다.

C++ 규칙 및 도구 집합 개선 사항

이 릴리스에는 다음과 같은 C++ 규칙 및 도구 집합 개선 사항이 포함되어 있습니다.

  • / experimental:preprocessor 스위치로 사용하도록 설정된 C++11 표준(C99 전처리기 기능 포함)을 준수하는 새로운 실험적 토큰 기반 전처리기입니다. 기존 전처리기를 사용할 때 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 형식 파일을 생성하기 위한새 항목 추가 템플릿이 >되었습니다. Visual Studio 규칙을 선택하면 생성된 파일이 도구 > 옵션에서 사용자의 현재 Visual Studio 서식 구성과 일치하려고 합니다.
  • 배송된 clang-format.exe 버전을 6.0.0으로 업데이트했습니다.
  • CppProperties.json구성 추가를 간소화하는 템플릿입니다.
  • CMakeSettings.json구성 추가를 간소화하는 템플릿이 추가되었습니다(그림 7).
CMake에 대한 구성 템플릿
(그림 7) CMake에 대한 구성 템플릿

C++ 생산성

C++ 생산성을 다음과 같이 향상하고 개선했습니다.

  • 이제 매크로의 C++ 빠른 정보 도구 설명은 정의가 아니라 확장되는 내용을 표시합니다. 이는 매크로 식별자가 전처리기로 대체되는 항목을 명확히 설명하기 때문에 다른 매크로를 참조하는 복잡한 매크로에 특히 유용합니다.
  • 코드를 현대화하는 새로운 도구로 기본 매크로를 constexpr 로 변환하는 새로운 빠른 수정 전구가 추가되었습니다.
  • 템플릿용 IntelliSense는 템플릿 본문 내에서 IntelliSense를 최대한 활용하기 위해 템플릿 인수에 대한 자세한 정보를 제공합니다 (그림 8).
템플릿 IntelliSense
(그림 8) 템플릿 IntelliSense
  • 코드 분석 환경을 새로 고치기 위해 노력하고 있습니다. 이제 도구>옵션>텍스트 편집기>C++>실험적>코드 분석에서 진행 중인 새로운 기능을 사용하도록 설정할 수 있습니다. 파일을 열거나 저장할 때 코드 분석을 백그라운드에서 실행할 수 있으며, 결과는 오류 목록과 편집기에서 녹색 물결선으로 표시됩니다 (그림 9).
편집기 내 코드 분석
(그림 9) 편집기 내 코드 분석

C++ 디버깅 개선 사항

다음과 같은 디버깅을 개선했습니다.

  • 이제 내 코드만 사용하면 호출 스택 창에서 해당 호출을 축소하는 것 외에도 시스템 또는 타사 C++ 라이브러리에서 코드를 단계별로 실행할 수 있습니다. 코드가 /JMC로 컴파일되고 사용자가 아닌 라이브러리 경로가 .natjmc 파일에 지정된 경우 C++ 라이브러리에 대해 이 동작을 제어할 수 있습니다. 시스템 라이브러리가 사용자 코드를 호출하는 경우 단계별로 실행하면 디버거가 모든 시스템 코드를 건너뛰고 사용자 코드 콜백의 첫 번째 줄에서 중지됩니다 (그림 10).
내 코드만
(그림 10) 내 코드만
  • 이제 Watch, Quickwatch, Autos 및 Locals 창 내에서 데이터 중단점을 설정할 수 있으므로 메모리에 저장된 값이 몇 번의 짧은 클릭으로 변경될 때 중단될 수 있습니다.
  • 소스 링크를 사용하면 컴파일 중에 실행 파일 또는 라이브러리의 원래 소스 코드에 대한 정보를 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 파일 내에서 스크립트 블록을 편집할 때 향상된 기능을 제공합니다. (참고: WebPack 또는 이와 유사한 빌드 프로세스를 사용하여 .vue 파일을 런타임에 필요한 HTML 및 JS 파일로 변환해야 합니다. 자세한 내용은 단일 파일 구성 요소 페이지를 참조하세요).

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

.vue 파일 편집
(그림 11) .vue 파일 편집

ESLint 개선 사항

이 릴리스에 대한 ESLint 지원을 다시 시작했습니다. ESLint에는 다음과 같은 향상된 기능과 향상된 기능이 있습니다.

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

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

ESLint 옵션
(그림 12) ESLint 옵션

Node.js 대한 폴더 개선 사항 열기

"Node.js 워크로드"가 설치된 경우 폴더 열기 시나리오에서 JavaScript 및 TypeScript를 사용하는 다양한 개선 사항이 있습니다. 예를 들어 NPM 패키지 관리, TypeScript 빌드, Node.exe실행 및 디버깅, NPM 스크립트 실행 및 단위 테스트 실행.

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

편집기 성능 향상

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

Visual Studio 웹 도구

라이브러리 관리자는 Visual Studio 2017에 포함된 새로운 기능입니다. 웹 프로젝트에서 클라이언트 쪽 라이브러리를 관리하는 데 도움이 됩니다.

컨테이너 도구

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

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

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

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

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

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

Docker 시작 프로필
(그림 15) Docker 시작 프로필

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

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

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

컨테이너 오케스트레이터 지원 추가
(그림 16) 오케스트레이션 지원 추가

게시 개선 사항

이 릴리스에는 다음과 같은 게시 개선 사항이 포함되어 있습니다.

  • 컨테이너 레지스트리에 Docker 컨테이너를 게시할 때 이제 이미지에 대한 태그를 사용자 지정할 수 있습니다. 태그를 수동으로 추가하거나(기본값은 "최신") 자동 생성된 태그를 사용하여 각 태그가 고유한지 확인할 수 있습니다.
  • 새 Azure App Service를 만들 때 원격 분석을 자동으로 수집하도록 Application Insights를 구성할 수도 있습니다. Application Insights도 있는 지역을 선택하는 경우 기본적으로 사용하도록 설정됩니다. Application Insights를 아직 포함하지 않는 지역을 선택하는 경우 드롭다운에서 Application Insights 리소스에 대해 다른 지역을 수동으로 지정할 수 있습니다.
  • Azure Functions 프로젝트를 게시할 때 새 Zip 실행 기능을 사용하여 게시하도록 선택할 수 있습니다.

Visual Studio의 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 어셈블리는 앱에서 실행 또는 디버깅에 사용할 수 없습니다.

android Emulator 지원 Hyper-V

이 릴리스는 Windows 10 2018년 4월 업데이트에서 실행할 때 Hyper-V와 호환되는 Google Android 에뮬레이터 에 대한 지원을 추가합니다 (그림 17). 이를 통해 Google의 Android 에뮬레이터를 Hyper-V 가상 머신, Docker 도구, HoloLens 에뮬레이터 등을 비롯한 다른 Hyper-V 기반 기술과 나란히 사용할 수 있습니다. 이제 Hyper-V 사용하는 모바일 앱 개발자는 항상 최신 Android API를 지원하는 빠른 Android 에뮬레이터에 액세스할 수 있으며, 기본 제공 Google Play 서비스와 함께 작동하며 카메라, 지리적 위치 및 빠른 부팅을 포함한 Android 에뮬레이터의 모든 기능을 지원합니다.

동시에 실행되는 Google Android 에뮬레이터 및 HoloLens 에뮬레이터의 스크린샷
(그림 17) Google Android Emulator 및 HoloLens Emulator

Xamarin.Android Designer

Xamarin.Android 용 디자이너 환경을 크게 개선 했습니다. 주요 내용은 다음과 같습니다.

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

Xamarin.Forms 미리 보기

이제 Xamarin.Forms 미리 보기는 Xamarin.Forms 버전 3.1.0.583944 이상을 사용할 때 도구 상자 지원을 제공합니다. Xamarin.Forms 컨트롤이 도구 상자에 표시되므로 도구 키트를 새로 사용하는 컨트롤을 더 쉽게 검색할 수 있습니다. 컨트롤을 XAML 코드 편집기로 끌어서 놓아 페이지에 컨트롤을 추가할 수도 있습니다. Xamarin.Forms 미리 보기는 이제 XAML 편집기의 일부입니다. 편집기 창 가장자리에 있는 확장 아이콘을 사용하여 열고 닫을 수 있습니다.

파이썬

이 릴리스는 Python 개발자를 위해 다음과 같은 향상된 사항을 추가합니다.

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

로컬 Azure 함수 설정 마이그레이션

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

Connected Services

이제 Azure Function Projects를 사용하는 솔루션에 대해 Visual Studio 2017에서 직접 Azure 함수에 대한 지속적인 업데이트를 구성할 수 있습니다.

테스트 탐색기 개선

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

새 확장성 기능

언어 서버 프로토콜

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

AsyncPackage 템플릿

이제 확장 작성자는 항목 템플릿을 사용하여 확장 성능을 최적화하기 위해 AsyncPackages를 만들 수 있습니다. 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 참조가 없는 프로젝트의 테스트 어댑터 확장을 검색할 수 있습니다. 두 옵션 모두 기본적으로 선택되므로 이 릴리스에서는 기본 동작이 변경되지 않습니다.
  • 참고: Non-.NET 테스트 어댑터는 이 변경의 영향을 받지 않습니다.

.NET Framework 비밀 지원 ASP.NET

.NET Framework 4.7.1 이상을 대상으로 하는 .NET Framework 프로젝트인 ASP.NET 이제 프로젝트를 마우스 오른쪽 단추로 클릭하고 "관리되는 사용자 비밀"을 선택하여 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를 만드는 확장 작성자는 확장을 테스트해야 합니다. 자세한 내용은 확장에 대한 자동 로드 동작을 업데이트하여 중요한 시나리오의 응답성 향상을 참조하세요.


---

릴리스 정보 아이콘 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 핵심 서비스 거부 취약성

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 매크로 어셈블러 변조 취약성

Microsoft 매크로 어셈블러와 관련된 취약성을 변조하여 코드의 유효성을 잘못 검사합니다. 보안 업데이트는 Microsoft 매크로 어셈블러가 코드 논리의 유효성을 제대로 검사하도록 하여 취약성을 해결합니다.

CVE-2018-8171 ASP.NET 핵심 보안 기능 바이패스 취약성

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

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로 업데이트하는 것이 좋습니다.

릴리스 정보 아이콘 Visual Studio 2017 버전 15.8.1

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

15.8.1에서 해결된 주요 문제

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

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

릴리스 정보 아이콘 Visual Studio 2017 버전 15.8.2

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

15.8.2에서 해결된 주요 문제

다음은 15.8.2에서 해결된 고객이 보고한 문제입니다.


릴리스 정보 아이콘 Visual Studio 2017 버전 15.8.3

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

15.8.3에서 해결된 주요 문제

다음은 15.8.3에서 해결된 고객이 보고한 문제입니다.


릴리스 정보 아이콘 Visual Studio 2017 버전 15.8.4

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

15.8.4에서 해결된 주요 문제

다음은 15.8.4에서 해결된 고객이 보고한 문제입니다.

보안 권고 고지


릴리스 정보 아이콘 Visual 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의 Xamarin 도구

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


릴리스 정보 아이콘 Visual 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 플랫폼 개발 워크로드에 대한 선택적 구성 요소로 최신 Windows 10 SDK(빌드 17763)를 사용할 수 있습니다. Windows 10 SDK(10.0.17763.0) 확인란을 선택하여 이 SDK를 워크로드에 추가할 수 있습니다.


릴리스 정보 아이콘 Visual 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 정보 공개 취약성


릴리스 정보 아이콘 Visual Studio 2017 버전 15.8.8

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

15.8.8에서 해결된 주요 문제

다음은 15.8.8에서 해결된 고객이 보고한 문제입니다.


릴리스 정보 아이콘 Visual Studio 2017 버전 15.8.9

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

15.8.9에서 해결된 주요 문제

다음은 15.8.9에서 해결된 고객이 보고한 문제입니다.


알려진 문제

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

Visual Studio 2017 알려진 문제


Visual Studio 2017 릴리스 정보 기록

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