Visual Studio 2015 Update 3 released
Written by Microsoft
We are happy to announce the release of Visual Studio 2015 Update 3. One of the top issues reported in Update 2 was around high memory consumption. We addressed this issue in Update 3 RC, reached out to customers who had reported this issue and received positive confirmation on the fix. In Update 3 you will see many such fixes addressing customer feedback around performance and stability.
Tools for Apache Cordova
Visual Studio 2015 Update 3 includes Tools for Apache Cordova Update 10, including the improvements below. For more information about this release, see the Tools for Apache Cordova release notes for Update 9 and Update 10. For the latest news about our tools, visit our Developer Blog on GitHub.
- We’ve added support for Cordova 6.1.1, the default version for new projects.
- We’ve retired the Cordova Plugin Registry that was used in Cordova 4.x, which means that we now require a minimum of Cordova 5.x or later to add plugins.
- The Core Plugins list has been updated and now includes plugins for enterprise scenarios, such as Intune, Azure engagement, security and SQLite local storage.
- You can now add plugins from the config designer either by the npm package name or by the ID.
- You can also add plugins that require parameters from the config designer.
Developer Analytics Tools
We’ve added the following improvements in Developer Analytics Tools v7.0.2:
- Application Insights Trends, a tool for finding trends in your app’s telemetry.
- New Exception telemetry in CodeLens.
- Production telemetry information added to exceptions in Diagnostic Tools.
- Support for adding Application Insights to ASP.NET Core RC2 projects from Visual Studio.
- Diagnostic Tools events for ASP.NET 5 RC1 and ASP.NET Core RC2 projects.
- Automatic refreshes of Application Insights Search when detail filters, time ranges and events are selected.
- Go to Code from requests in Search.
- Improved HockeyApp sign-in experience.
For more information, see the technical release notes in the Microsoft Azure documentation.
Debugging and Diagnostics
Diagnostic Tools support for apps running on OneCore devices, including HoloLens and IOT, has been added in Update 3.
C++ Edit and Continue improvements:
- Better performance and reliability when FASTLINK is enabled.
- Successful application of code changes to static libraries no longer produces Stale Code.
- C4656 warnings will no longer appear for false positive type changes during recompilation.
- Support for adding a new type with the same name crossing multiple compilation units.
XAML UI Debugging improvements:
- Whenever the focus changes in your app, the new Track Focus feature in the Live Visual Tree will cause selection in the Live Visual Tree to update to the currently focused element.
Visual Studio IDE
Subscriptions and product keys
We’ve addressed feedback in Update 3 from customers using subscriptions through an online identity or product keys to unlock the IDE, in the following ways:
- You are no longer required to visit the Visual Studio Website to activate your assigned Visual Studio Cloud subscription and can immediately start using the Visual Studio IDE as soon as the subscription is assigned.
- We’ve improved error handling when applying a product key.
- All user account and licensing operations are now secured by using HTTPS.
- We’ve made accessibility improvements in the Account Settings dialog for activating a subscription and entering a product key.
- New Re-authentication every ~8 days is no longer required to keep the personalisation account active and synchronising roaming settings.
Tools for Universal Windows Apps
Visual Studio 2015 Update 3 comes with several enhancements to the Tools for Universal Windows apps. A key improvement allows you to sign in with Azure Active Directory credentials for an AAD Store account when creating a package to submit to the Windows Store. Once the project has been associated with the Windows Store, you will no longer need to sign in to create a package to submit to the Store.
.NET Native for Universal Windows Apps
.NET Native 1.4 is a minor servicing release that improves performance, addresses several customer reported bugs and improves Release build compilation times of large apps. XAML applications and Unity games that use .NET Native 1.4 will have better runtime performance. These improvements were achieved by making both reflection and native API calls faster.
We’ve addressed feedback from customers about improving performance and reliability.
Domain Specific Graphical Designers (including EDMX and DBML)
On Windows 10, Visual Studio is no longer unresponsive when you are opening or attempting to edit large EDMX or DBML diagrams while the on-screen keyboard is displayed.
- Visual Studio is no longer unresponsive when you are trying to “Generate Code Map for Solution” when the solution contained installer projects (.vdproj).
- Visual Studio is no longer unresponsive when you run a code map command from the code editor and close the Code Map window as soon as it appears.
- When building a solution having a modeling project containing a Layer diagram with a Validate action, a CPU core is no longer used after the build completes.
- You can now validate a layer diagram when its parent modeling project is referencing PCL libraries (for instance ODP.Net).
Node.js Tools for Visual Studio
New Node.js Tools 1.2 RC for Visual Studio is now available for download. We expect this release to provide significantly improved stability and performance, including reducing out-of-memory crashes seen in prior releases.
Other highlights include:
- Faster, better ES6 IntelliSense
- More reliable debugging
- Improved Unit Testing experiences (including Tape support)
- .npm command in more project types
For full information and downloads, see the Node.js Tools 1.2 RC release page.
Web Developer Tools
For ASP.NET Web Application projects, when “Enable Edit and Continue” checkbox is unchecked, the IIS Express process will no longer stop every time you stop debugging.
Enhancements, such as new checks and warning messages for the C++ Compiler, as well as support and performance improvements for C# and Visual Basic coding, were included in Update 3.
- We now check the access of a deleted trivial copy/move ctor. Without the check, we may incorrectly call the defaulted copy ctor (in which the implementation can be ill-formed) and cause potential runtime bad code generation.
- Std::is_convertible now correctly detects self-assignment of a class type when the copy-constructor is deleted or private.
- As the last phase of completing the deprecation of attributed ATL support started in Visual Studio 2008, we’ve added a new deprecation warning to the compiler. With Visual Studio 2015 Update 3, usages of attributed ATL code will generate an on-by-default level 1 warning. C4467
- When using PCH files, mismatched -I include directories to the compiler between -Yc and -Yu compilations will now produce a new warning. C4599
- When using PCH files, mismatched #include directives in source files between -Yc and -Yu compilations will now produce a warning. C4598
For more information on how these changes might impact your existing code, see Visual C++ Porting and Upgrading Guide on MSDN.
- We’ve restored debug mode performance when destroying ranges of trivial objects that regressed in Update 2, like in vector.
- We’ve implemented the swappable traits from the C++17 working paper, from the proposal P0185 Adding [nothrow-]swappable traits. As a speculative C++17 feature, the traits (is_swappable, is_swappable_with, is_nothrow_swappable and is_nothrow_swappable_with) are only visible and the constraints on std::swap are only active, when compiling with /std:c++latest.
- We’ve removed ETW eventing calls from vcruntime140.dll and static libraries that previously fired during process startup and dllmain.
New We’ve removed symbol name length in common machinery used by STL containers, such as std::vector, reducing likelihood of C4503 warnings. For example, the following type no longer generates a warning: concurrency::concurrent_unordered_map<_wstring2c_><_uint64_t2c_>>>>.
ATL/MFC/AMP/PPL: Lots of conformance fixes related to two-phase lookup, as follows:
- _com_ptr_t now has a move constructor and move assignment operator.
MFC: Fixed handling of HMENU values that occasionally prevented menus from being properly displayed in 64-bit applications.
ATL/MFC: No longer emit the following warnings:
- Function overriding/hiding: C4263, C4264, C4266
- Mismatching exception specification: C4986
ATL: All variations of AtlThrow are now properly marked with __declspec(noreturn). This prevents erroneous SAL warnings from being emitted.
ATL: Fixed/Improved several SAL annotations.
/std:c++latest enables the following new features: P0025R1 “clamp()”, P0185R1 “is_swappable, is_nothrow_swappable” and P0272R1 “Non-const basic_string::data().”.
/std:c++latest also controls the removal of the following old features: N4190 “Removing auto_ptr, random_shuffle(), And Old Stuff”, P0004R1 “Removing Deprecated Iostreams Aliases”, LWG 2385 “function::assign allocator argument doesn’t make sense” and various non-Standard features (the std::tr1 namespace, some TR1-only machinery and the std::identity struct).
Silent bad codegen in atomic/atomic on x86 was fixed.
The STL now avoids using thread-safe “magic statics” except when absolutely necessary, improving codegen.
Tuple’s perfect forwarding constructor now avoids out-competing the copy constructor, fixing compiler errors in certain scenarios.
- Deprecated the following: __yield_value & __await keywords. Use co_await / co_yield instead.
- Added deprecation notice to: to_address and from_promise members of coroutine_handle class. Instead of coroutine_handle::to_address(), use coroutine_handle::address().
- Instead of coroutine_handle::from_promise(Promise *P), use coroutine_handle::from_promise(Promise &P).
We’ve improved performance of the following: std::equal and std::lexicographical_compare by dispatching to memcmp and memchr more aggressively, resulting in large performance improvements in some scenarios. For example: equal(char,char,char, char) on 64 bit platforms.
- debug builds significantly by reducing the number of bookkeeping function calls in our iterator debugging machinery.
- string::push_back has improved another 40% vs. Update 2 in release builds, with more substantial improvements in debug builds. (This is in addition to large performance improvements here that shipped in Update 2).
- Debug builds across all standard algorithms have improved by eliminating several types of empty template metaprogramming support calls (for example,_Iter_cat), across all algorithms that take predicates by reducing the number of predicate copies.
- std::mismatch under _ITERATOR_DEBUG_LEVEL 1 and 2 by range checking the second range where possible ahead of iteration.
We’ve applied improved diagnostics for _SCL_INSECURE_DEPRECATE messages to the remaining algorithms (in Update 2 only a small number of algorithms were hooked into the new deprecation mechanism). This also improves the debugging experience when debugging into the standard algorithms, as there is no longer any _ITERATOR_DEBUG_LEVEL preprocessor interaction declaring multiple copies of standard algorithms. We have also fixed the following:
- We’ve fixed the inability to compile some functions like mismatch(iter, iter, T) due to interaction between our nonstandard _ITERATOR_DEBUG_ARRAY_OVERLOADS and dual-range algorithms.
- We’ve fixed violations of the off-by-default warning C4242 in the STL.
- We’ve fixed possible integer overflow bug in std::pop_heap.
- We’ve fixed potential hang under /clr:pure due to CLR-inserted LoadLibrary calls while holding the locale lock.
- New The C++/CLI expression evaluator now supports debugger features, such as Natvis, that were previously only supported for pure native apps. Now in a mixed managed/native app when objects are listed in a variable window (or inside a datatip), they will expand just like they do in a pure native app as defined by the type visualisers.
Clang/C2 Platform Toolset
We’ve integrated Clang 3.8 release into Clang/C2 and provided a 64-bit hosted toolset.
We’ve enabled support for the latest Android NDK version R11C and the capability to upgrade the current projects to target the latest NDK.
New Visual Studio 2015 Update 3 includes TypeScript 1.8.34. We’ve fixed an out of memory error with some large TypeScript projects that use AngularJS.
C# and Visual Basic
New We’ve invested in reducing memory footprint and improving the performance of code diagnostics. This will reduce a lot of the out-of-memory crashes seen in prior releases. We’ve improved the performance of running code diagnostics on an entire solution. To learn more about code diagnostic performance enhancements, read the How to: Enable and Disable Full Solution Analysis for Managed Code page on MSDN.
Additional improvements include the following:
- An option to add a reference to a NuGet package as a quick fix:
You can enable this option from Tools > Options > Text Editor > C# > Advanced, under “Using Directives”:
- We’ve improved support for Portable class libraries targeting the .NET Platform Standard.
- We’ve added performance improvements to the C# GoTo Implementation and Find All References. You can try these by selecting an object, right-clicking on it and then selecting them from the menu.
- When you apply a “fix all” action to document/project/solution we now display a progress bar.
New Several bugs have been fixed in Team Explorer:
- Unable to view the contents of a file that was deleted from a Git repository.
- When viewing the history of a branch, the Go to Child icon should be disabled when the focus is the latest commit.
- When changing branches using Git.exe, Visual Studio may crash or get into an unknown state.
- When viewing the history of a branch in a Git repository, the highlighting in the history graph has glitches.
- When creating a branch in Team Explorer, the Alt+B shortcut for Create Branch conflicts with the Build menu.
- In a high memory usage situation, when attempting to unpack an object larger than the available memory, Git gives an error of “Object not found – no matching loose object ()” instead of an out of memory error.
- Typo in the error message “… In order the open this solution …”.
- When viewing the history of a branch and right clicking on the first commit in history, Cherry Pick is disabled.
- When creating a pull request from the Team Explorer branches page context menu uses the current branch instead of the selected branch.
Xamarin for Visual Studio
New Visual Studio 2015 Update 3 now includes Xamarin 4.1. In addition to a number of bug fixes, this release adds support for tvOS, improves the iOS Assets Catalog support, improves the XML editing experience and adds selectors for SSL/TLS and HttpClient implementations when creating iOS apps.