Visual Studio 2015 업데이트 3

Last Update: 2017-09-01

릴리스 날짜: 2016년 6월 27일

오늘 Visual Studio 2015 업데이트 3이 출시되었음을 알려드리게 되어 기쁘게 생각합니다. 업데이트 2에서 보고된 주요 문제 중 하나는 메모리 소비가 크다는 것이었습니다. 업데이트 3 RC에서 이 문제를 해결했고 이 문제를 보고한 고객에게 연락하여 이제는 이런 문제가 없다는 긍정적 답변을 받았습니다. 업데이트 3에는 이같이 성능 및 안정성에 관한 고객 피드백을 해결하는 많은 수정 내용이 있습니다. 이 릴리스 정보가 기대하던 릴리스 정보가 아니라면 가장 최신 버전의 릴리스 정보에 다다른 것입니다.

Visual Studio에서 피드백 옵션을 사용하여 피드백을 보내 주세요. Visual Studio 2015 UserVoice 사이트에서 의견을 제안할 수도 있습니다.

다운로드

My.VisualStudio.com에서 Visual Studio 2015를 다운로드할 수 있습니다. My.VisualStudio.com을 사용하려면 무료 Dev Essentials 구독 또는 Visual Studio 구독이 필요합니다.

자세한 내용은 Visual Studio의 특정 릴리스를 설치하는 방법을 참조하세요.

새로운 기능

기타 변경 내용

Apache Cordova용 도구

Visual Studio 2015 업데이트 3에는 아래의 향상된 기능을 포함하여 Apache Cordova용 도구 업데이트 10이 들어 있습니다. 이 릴리스에 대한 자세한 내용은 업데이트 9업데이트 10에 대한 Apache Cordova용 도구 릴리스 정보를 참조하세요. Microsoft 도구에 대한 최신 뉴스는 GitHub의 개발자 블로그를 참조하세요.

  • 새 프로젝트의 기본 버전인 Cordova 6.1.1에 대한 지원이 추가되었습니다.
  • Cordova 4.x에서 사용되던 Cordova 플러그 인 레지스트리는 더 이상 사용되지 않습니다. 즉, 이제 플러그 인을 추가하려면 Cordova 5.x 이상이 필요합니다.
  • 코어 플러그 인 목록이 업데이트되었으며, Intune, Azure Engagement, 보안 및 SQLite 로컬 저장소와 같은 엔터프라이즈 시나리오를 위한 플러그 인이 들어 있습니다.
  • 이제 npm 패키지 이름 또는 ID별로 구성 디자이너에서 플러그 인을 추가할 수 있습니다.

plugin-byid

  • 또한 구성 디자이너에서 매개 변수가 필요한 플러그 인을 추가할 수 있습니다.

plugin-parameters

개발자 분석 도구

개발자 분석 도구 v7.0.2는 다음과 같이 더 개선되었습니다.

  • 앱 원격 분석에서 추세를 찾을 수 있는 도구인 Application Insights 추세
  • 새로운 기능 CodeLens의 예외 원격 분석
  • 진단 도구의 예외에 프로덕션 원격 분석 정보가 추가됨
  • Visual Studio에서 ASP.NET Core RC2 프로젝트에 Application Insights를 추가하는 기능 지원
  • ASP.NET 5 RC1 및 ASP.NET Core RC2 프로젝트에 대한 진단 도구 이벤트
  • 세부 필터, 시간 범위 및 이벤트가 선택된 경우 Application Insights 검색의 자동 새로 고침
  • 검색의 요청에서 코드로 이동 사용 가능
  • HockeyApp 로그인 환경이 개선됨

자세한 내용은 Microsoft Azure 설명서의 기술 릴리스 정보를 참조하세요.

디버깅 및 진단

업데이트 3에는 HoloLens, IOT 같이 OneCore 장치에서 실행되는 앱에 대한 진단 도구 지원 기능이 포함되어 있습니다.

C++ 편집하며 계속하기의 개선 사항:

  • FASTLINK가 사용하도록 설정된 경우 성능 및 안정성이 향상되었습니다.
  • 정적 라이브러리에 코드 변경 내용을 적용할 때 더 이상 부실 코드가 생성되지 않습니다.
  • 다시 컴파일하는 동안 가양성 형식 변경에 대해 더 이상 C4656 경고가 표시되지 않습니다.
  • 여러 컴파일 단위를 넘나드는 같은 이름의 새 형식을 추가하는 기능이 지원됩니다.

XAML UI 디버깅 개선 사항:

  • 앱에서 포커스가 변경될 때마다 라이브 시각적 트리의 새로운 포커스 추적 기능으로 인해 라이브 시각적 트리의 선택이 현재 포커스가 있는 요소로 업데이트됩니다.

Visual Studio IDE

구독 및 제품 키

업데이트 3에서 다음과 같은 방법으로, 온라인 ID 또는 제품 키를 통해 구독을 사용하여 IDE를 잠금 해제하는 고객의 의견을 해결했습니다.

  • 이제는 할당된 Visual Studio 클라우드 구독을 활성화하기 위해 https://my.visualstudio.com을 방문하지 않아도 되며, 구독을 할당받는 즉시 Visual Studio IDE를 사용하여 시작할 수 있습니다.
  • 제품 키를 적용할 때 발생하는 오류 처리가 개선되었습니다.
  • 모든 사용자 계정 및 라이선스 작업은 이제 HTTPS를 통해 보호됩니다.
  • 구독을 활성화하고 제품 키를 입력하는 계정 설정 대화 상자의 접근성이 개선되었습니다.
  • 새로운 기능 이제는 개인 설정 계정을 활성 상태로 유지하고 로밍 설정을 동기화하기 위해 8일마다 재인증을 할 필요가 없습니다.

유니버설 Windows 앱용 도구

Visual Studio 2015 업데이트 3에는 유니버설 Windows 앱용 도구에 대한 몇몇 개선 사항이 포함되어 있습니다. 주요한 개선 사항은 Windows 스토어에 제출할 패키지를 만들 때 AAD 저장소 계정의 Azure Active Directory 자격 증명을 사용하여 로그인할 수 있다는 점입니다. 프로젝트를 Windows 스토어와 연결한 후에는 스토어에 제출할 패키지를 만들기 위해 더 이상 로그인할 필요가 없습니다.

유니버설 Windows 앱용 .NET 네이티브

.NET 네이티브 1.4는 보조 서비스 릴리스로, 성능을 높이고 고객이 보고한 몇몇 버그를 해결하며 대규모 앱의 릴리스 빌드 컴파일 시간을 개선해 줍니다. .NET 네이티브 1.4를 사용하는 XAML 응용 프로그램 및 Unity 게임의 런타임 성능이 향상됩니다. 이렇게 개선할 수 있었던 것은 리플렉션과 네이티브 API 호출이 모두 빨라졌기 때문입니다.

아키텍처 도구

성능 및 안정성 개선에 대한 고객 피드백을 해결했습니다.

도메인 특정 그래픽 디자이너(EDMX 및 DBML 포함)

Windows 10에서 화상 키보드가 표시되어 있는 동안 큰 EDMX 또는 DBML 다이어그램을 열거나 편집하려고 할 때 이제는 Visual Studio가 응답하지 않습니다.

코드 맵

  • 솔루션에 설치 관리자 프로젝트(.vdproj)가 있을 때 "솔루션용 코드 맵을 생성"하려고 하면 이제는 Visual Studio가 응답하지 않습니다.
  • 코드 편집기에서 코드 맵 명령을 실행하고 코드 맵 창이 나타나자마자 창을 즉시 닫으면 이제는 Visual Studio가 응답하지 않습니다.

레이어 유효성 검사

  • 솔루션을 빌드할 때 레이어 다이어그램으로 구성된 모델링 프로젝트와 유효성 검사 동작을 포함하면 이제는 빌드가 완성된 후에 CPU 코어가 사용되지 않습니다.
  • 이제 부모 모델링 프로젝트가 PCL 라이브러리(예: ODP.Net)를 참조하는 경우 레이어 다이어그램의 유효성을 검사할 수 있습니다.

Visual Studio용 Node.js 도구

새로운 기능 이제 Visual Studio용 Node.js 도구 1.2 RC를 다운로드할 수 있습니다. 이 릴리스를 사용하면 이전 릴리스의 메모리 부족 충돌이 줄어들고 안정성과 성능이 크게 높아질 것으로 예상됩니다.

그 외 중요 사항은 다음과 같습니다.

  • ES6 IntelliSense의 속도와 성능 개선
  • 더 안정된 디버깅
  • 유닛 테스트 환경 개선(테이프 지원 포함)
  • 더 다양한 프로젝트 형식에 .npm 명령 사용

전체 정보 및 다운로드 내용은 Node.js 도구 1.2 RC 릴리스 페이지를 참조하세요.

Web 개발자 도구

ASP.NET 웹 응용 프로그램 프로젝트의 경우, "편집하며 계속하기 사용" 확인란이 선택 취소되어 있을 때 이제는 디버깅을 중지할 때마다 IIS Express 프로세스가 중지되지 않습니다.

Visual C++

업데이트 3에는 C# 및 Visual Basic 코딩에 대한 지원과 성능이 개선되었을 뿐 아니라 C++ 컴파일러에 대한 새 검사와 경고 메시지와 같은 고급 기능이 포함되어 있습니다.

C++ 컴파일러

  • 이제 삭제된 Trivial 복사/이동 ctor의 액세스를 검사할 수 있습니다. 검사 없이는 기본값으로 설정된 복사 ctor을 잘못 호출하여(구현 형식이 잘못될 수 있음) 런타임에 잘못된 코드가 생성될 수 있습니다.
  • Std::is_convertible은 이제 복사 생성자가 삭제되거나 private인 경우 클래스 형식의 자체 할당을 제대로 감지합니다.
  • Visual Studio 2008에서 시작된 특성 사용 ATL 지원의 사용 중단을 완료하는 마지막 단계로 컴파일러에 새로운 사용 중단 경고가 추가되었습니다. Visual Studio 2015 업데이트 3에서 특성 사용 ATL 코드를 사용할 경우 기본적으로 설정되어 있는 수준 1 경고가 발생합니다. C4467
  • PCH 파일을 사용할 경우 -Yc 컴파일과 -Yu 컴파일 간에 컴파일러에 대한 일치하지 않는 -I include 디렉터리가 있으면 이제 새로운 경고가 발생합니다. C4599
  • PCH 파일을 사용할 경우 -Yc 컴파일과 -Yu 컴파일 간에 소스 파일에 일치하지 않는 #include 지시문이 있으면 이제 경고가 발생합니다. C4598

이러한 변경 내용이 기존 코드에 미칠 수 있는 영향에 대한 자세한 내용은 MSDN의 Visual C++ Porting and Upgrading Guide(Visual C++ 포팅 및 업그레이드 가이드)를 참조하세요.

C++ 라이브러리

  • 벡터에서처럼 업데이트 2에서 회귀 분석한 Trivial 개체 범위 제거 시 디버그 모드 성능을 복원했습니다.
  • P0185 Adding [nothrow-]swappable traits(P0185 [nothrow-]swappable 특성 추가) 제안서의 C++17 연구 보고서에서 스왑 가능한 특성을 구현했습니다. 잘못된 C++17 기능으로, /std:c++latest로 컴파일할 경우 특성(is_swappable, is_swappable_with, is_nothrow_swappableis_nothrow_swappable_with)만 표시되고 std::swap에 대한 제약 조건만 활성화됩니다.
  • 이전에 프로세스 시작 및 dllmain 중에 발생하던 ETW 이벤트 호출이 vcruntime140.dll 및 정적 라이브러리에서 제거되었습니다.
  • 새 기능 일반 시스템에서 std::vector 같은 STL 컨테이너에 사용되는 기호 이름과 길이를 이제는 사용하지 때문에 C4503 경고의 발생 가능성이 줄어들었습니다. 예를 들어 concurrency::concurrent_unordered_map<wstring, vector<pair<uint64_t, vector<uint8_t>>>> 같은 유형을 사용해도 이제는 경고가 발생하지 않습니다.

  • ATL/MFC/AMP/PPL: 다음과 같이 2단계 조회와 관련된 여러 가지 규칙이 수정되었습니다.

    • _com_ptr_t에는 이제 이동 생성자와 이동 대입 연산자가 포함되어 있습니다.
    • MFC: 64 비트 응용 프로그램에서 가끔 메뉴가 제대로 표시되지 않게 하던 HMENU 값의 처리가 수정되었습니다.

    • ATL/MFC: 더 이상 다음 경고를 생성하지 않습니다.

    • 함수 재정의/숨기기: C4263, C4264, C4266
    • 일치하지 않는 예외 사양: C4986
    • /analyze: C6386

    • ATL: 이제 모든 AtlThrow 변형이 __declspec(noreturn)으로 제대로 표시됩니다. 따라서 잘못된 SAL 경고가 발생하지 않습니다.

    • ATL: 몇 가지 SAL 주석이 수정/개선되었습니다.

    • /std:c++latest는 P0025R1 "clamp()", P0185R1 "is_swappable, is_nothrow_swappable" 및 P0272R1 "Non-const basic_string::data()."와 같은 새로운 기능을 사용할 수 있게 해줍니다.

    • 또한 /std:c++latest는 N4190 "auto_ptr, random_shuffle() 및 이전 항목 제거", P0004R1 "사용되지 않는 Iostreams 별칭 제거", LWG 2385 "function::assign 할당자 인수가 적합하지 않음" 및 다양한 비표준 기능(std::tr1 네임스페이스, 일부 TR1 전용 기계 및 std::identity 구조체)과 같은 이전 기능 제거를 제어합니다.

    • x86에서 atomic<int64_t>/atomic<uint64_t>의 잘못된 자동 코드 생성이 수정되었습니다.

    • 이제 STL은 반드시 필요한 경우를 제외하고는 스레드로부터 안전한 "매직 정적 이름"을 사용하지 않아 코드 생성이 개선됩니다.

    • 이제 튜플의 완벽한 전달 생성자가 복사 생성자를 이기려고 하지 않으므로 특정 시나리오에서 컴파일러 오류가 수정되었습니다.

  • 코루틴:

    • 이제 __yield_value & __await 키워드가 사용되지 않습니다. 대신 co_await / co_yield 를 사용하세요.
    • coroutine_handle 클래스의 to_addressfrom_promise 멤버에 대한 사용 중단 알림이 추가되었습니다. coroutine_handle::to_address() 대신 coroutine_handle::address()를 사용하세요.
    • coroutine_handle::from_promise(Promise *P) 대신 coroutine_handle::from_promise(Promise &P)를 사용하세요.
  • memcmp 및 memchr에 더 적극적으로 디스패치하여 std::equalstd::lexicographical_compare의 성능을 높임에 따라 일부 시나리오에서 성능이 크게 향상되었습니다. 예를 들어 64비트 플랫폼인 경우 equal(char,char,char, char)로 작성했습니다.

    • 반복기 디버깅 기계에서 회계 장부 함수 호출 수를 줄여 디버그 빌드가 크게 향상되었습니다.
    • string::push_back도 디버그 빌드에서 상당한 개선이 이루어져 릴리스 빌드의 업데이트 2보다 40% 더 성능이 향상되었습니다. (이러한 성능 향상은 업데이트 2에서 제공된 큰 성능 향상에서 더 추가된 성능 향상입니다.)
    • 몇 가지 형식의 빈 템플릿 메타 프로그래밍 지원 호출(예: _Iter_cat)을 제거하여 모든 표준 알고리즘에서 디버그 빌드가 향상되었으며, 조건자 복사본 수를 줄여 조건자를 사용하는 모든 알고리즘에서 디버그 빌드가 향상되었습니다.
    • 범위별 _ITERATOR_DEBUG_LEVEL 1 및 2 아래의 std::mismatch에서 가능한 경우 반복에 앞서 두 번째 범위를 검사합니다.
  • 나머지 알고리즘에 _SCL_INSECURE_DEPRECATE 메시지에 대한 개선된 진단이 적용되었습니다(업데이트 2에서는 소수의 알고리즘만 새 사용 중단 메커니즘에 후크되었음). 또한 이로 인해 표준 알고리즘으로 디버그할 때 디버깅 환경이 개선되는데, 표준 알고리즘의 여러 복사본을 선언하는 _ITERATOR_DEBUG_LEVEL 전처리기 상호 작용이 더 이상 없기 때문입니다. 또한 다음 문제도 해결되었습니다.

    • 비표준 _ITERATOR_DEBUG_ARRAY_OVERLOADS와 이중 범위 알고리즘 사이의 상호 작용으로 인해 mismatch(iter, iter, T[])와 같은 일부 함수를 컴파일할 수 없었던 문제가 해결되었습니다.
  • STL에서 기본적으로 해제되어 있는 경고 C4242의 위반이 해결되었습니다.
  • std::pop_heap에서 가능한 정수 오버플로 버그가 수정되었습니다.
  • 로캘 잠금을 유지하고 있는 동안 CLR에서 삽입한 LoadLibrary 호출로 인해 /clr:pure에서 중단이 발생할 수 있는 문제가 해결되었습니다.

C++/CLI 디버깅

  • 새 기능 순수 네이티브 앱에서만 지원하던 Natvis 같은 디버거 기능을 이제 C++/CLI 식 계산기에서 지원합니다. 이제는 혼합된 관리/네이티브 앱에서 변수 창(또는 datatip 내)에 개체를 나열하는 경우 개체는 형식 시각화 도우미에서 정의한 순수 네이티브 앱에서 확장되는 것처럼 확장됩니다.

plugin-byid

Clang/C2 플랫폼 도구 집합

Clang 3.8 릴리스가 Clang/C2에 통합되었으며 64비트에서 호스트되는 도구 집합이 제공됩니다.

C++ MDD

최신 Android NDK 버전 R11C 및 현재 프로젝트를 대상 최신 NDK로 업그레이드하는 기능에 대한 지원이 제공됩니다.

TypeScript

새 기능 Visual Studio 2015 업데이트 3에 TypeScript 1.8.34가 포함되었습니다. AngularJS를 사용하는 일부 대형 TypeScript 프로젝트에서 발생하는 메모리 부족 오류가 해결되었습니다.

C# 및 Visual Basic

새 기능 메모리 사용 공간을 줄이고 코드 진단 성능을 향상하는 이 기능을 사용하면 이전 버전에서 발생한 많은 메모리 부족 충돌 오류가 줄어들 것입니다. 전체 솔루션에서 코드 진단 실행 성능이 향상되었습니다. 향상된 코드 진단 성능에 대해 자세히 알아보려면 MSDN의 How to: Enable and Disable Full Solution Analysis for Managed Code(방법: 관리 코드에 대해 전체 솔루션 분석 사용/사용 안 함) 페이지를 참조하세요.

다음과 같은 추가 개선 사항도 있습니다.

  • NuGet 패키지에 대한 참조를 빠른 픽스로 추가하는 옵션:

plugin-byid

도구 > 옵션 > 텍스트 편집기 > C# > 고급의 "Using 지시문"에서 이 옵션을 사용하도록 설정할 수 있습니다.

plugin-byid

  • .NET 플랫폼 표준을 대상으로 하는 이식 가능 클래스 라이브러리에 대한 지원이 개선되었습니다.
  • C# GoTo 구현 및 모두 찾기 참조에 대한 성능이 추가로 개선되었습니다. 개체를 선택하고 마우스 오른쪽 단추를 클릭한 다음 메뉴에서 이 옵션을 선택하여 이렇게 할 수 있습니다.
  • 문서/프로젝트/솔루션에 "모두 수정" 작업을 적용할 때 이제 진행률 표시줄이 표시됩니다.
  • 새 기능 대형 솔루션에서 C# 및 VB 프로젝트를 다시 로드할 때의 성능이 향상되었습니다. 자세한 내용과 팁은 Performance considerations for large solutions(대형 솔루션의 성능을 위해 고려해야 할 점)를 참조하세요.

팀 탐색기

새 기능 팀 탐색기에서 몇몇 버그가 수정되었습니다.

  • Git 리포지토리에서 삭제된 파일의 내용을 볼 수 없습니다.
  • 분기 기록을 볼 때 포커스가 최신 커밋이면 자식으로 이동 아이콘이 비활성화됩니다.
  • Git.exe를 사용하여 분기를 변경할 때 Visual Studio가 충돌하거나 알 수 없는 상태가 되기도 합니다.
  • Git 리포지토리에서 분기 기록을 볼 때 기록 그래프에서 강조 표시가 잘못 나타납니다.
  • 팀 탐색기에서 분기를 만들 때 분기 만들기를 위한 Alt+B 바로 가기가 빌드 메뉴와 충돌합니다.
  • 메모리 사용량이 많은 상황에서 사용 가능한 메모리보다 큰 개체를 압축 해제하려고 하면 메모리 부족 오류 대신에 "Object not found - no matching loose object ()”(개체를 찾을 수 없음 - 일치하는 느슨한 개체 ()가 없음)" 오류가 Git에서 발생합니다.
  • “... In order the open this solution …(이 솔루션을 열려면...)" 오류 메시지에 오타가 있습니다.
  • 분기 기록을 볼 때 기록에서 첫 번째 커밋을 마우스 오른쪽 단추로 클릭하면 Cherry Pick가 비활성화됩니다.
  • 팀 탐색기에서 끌어오기 요청을 만들 때, 선택한 분기 대신에 현재 분기가 분기 페이지의 상황에 맞는 메뉴에 사용됩니다.

Visual Studio용 Xamarin

새 기능 Visual Studio 2015 업데이트 3에는 이제 Xamarin 4.1이 포함됩니다. 여러 버그 수정 외에도 이 릴리스에서는 tvOS에 대한 지원 기능을 추가했고 iOS 자산 카탈로그 지원 기능을 개선했으며 XML 편집 환경도 개선했고 iOS 앱을 만들 때의 SSL/TLS 및 HttpClient 구현에 대한 선택기를 추가했습니다. 자세한 내용은 Xamarin 릴리스 정보를 참조하세요.

알려진 문제

이 릴리스의 알려진 문제에 대한 전체 설명은 MSDN 문서 Known Issues in Visual Studio Update 3(Visual Studio 업데이트 3의 알려진 문제)을 참조하세요.