August 14th, 2018

Visual Studio 2017 version 15.8

John Montgomery
Corporate Vice President

Today we are releasing Visual Studio 2017 version 15.8. In this version we have focused on productivity, performance and bug fixes. There are many new features you‘ll find useful, but in this post, I’ll underscore the highlights you may be most interested in. For the complete list of all the updates in today’s release, check out the Visual Studio 2017 version 15.8 release notes and list of bugs submitted by you that are fixed. If you prefer to first try these updates without installing the release, check out the Visual Studio images in Azure.

A couple of notable additions to try:

  • Multi-caret editing improvements
  • Faster git branch switching
  • Faster unit test execution
  • TypeScript 3.0 support

Read on for more details.

Productivity

This release adds notable productivity and debugging enhancers.

Multi-caret editing. Editing multiple locations in a file, simultaneously, is now easy. Start by creating insertion points and selections at multiple locations in a file with multiple caret support. This will then allow you to add, edit, or delete text in multiple places simultaneously.

  • Insert carets with Ctrl + Alt + LeftMouseClick
  • Add a selection and caret at next location that matches current selection with Shift + Alt + Ins.
  • See Edit > Multiple Carets for full list of actions.

Contextual Navigation. You can now access a contextual navigation menu with the shortcut Alt + `.

New keybinding profiles for Visual Studio Code and ReSharper (Visual Studio). Speaking of shortcuts, you can now keep your keybindings consistent with two new keyboard profiles: Visual Studio Code and ReSharper (Visual Studio). You can find these schemes under Tools > Options > General > Keyboard and the top drop-down menu.

Keyboard mappings

New commands and improvements to the Go To All window:

  • Go to Enclosing Block (Ctrl + Alt + UpArrow) allows you to quickly navigate up to the beginning of the enclosing code block.
  • Go to Next/Previous Issue (Alt + PgUp/PgDn) allows you to skip to the next/previous issue (error, squiggle, lightbulb).
  • Go to Member (Ctrl + T, M) is now scoped to the file by default. You can change the default back to solution by toggling the Scope to Current Document (Ctrl + Alt + C).

And… more refactorings and quick actions using Ctrl + . or Alt + Enter:

  • Invert If enables you to invert your logic in if-else statements. Place your cursor in the if keyword to trigger this refactoring.
  • Add parameter from method callsite allows you to add a parameter to a method by adding an argument to a method callsite and triggering Quick Actions and Refactorings.
  • Remove unnecessary parentheses removes parentheses around binary operators that are not essential for compilation. You can configure this style rule through Tools > Options > Text Editor > C# > Code Style > General or .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
  • Use ternary conditionals in assignments and return statements can also be configured as a style rule in Tools > Options > or through .editorconfig:
    • dotnet_style_prefer_conditional_expression_over_assignment
    • dotnet_style_prefer_conditional_expression_over_return

Select develop vs Debug instance of Visual Studio. When you have more than one instance of Visual Studio 2017 installed, you can now select which instance to deploy your extension to when debugging. That way you can, for example, develop in Visual Studio release channel while debugging in the preview channel.

Performance

In this release we have continued to focus on performance and have made significant improvements in many areas.

Git branch checkout and branch switching. Git branch checkout and branch switching for C#, VB, and C++ projects is much faster for large solutions since solution reload is no longer required.

Option to not reopen docs from previous session. We got feedback on how in some cases when Visual Studio reopened documents from previous sessions it wasn’t required, and that it would cause perf delays. So in this release we added an option to disable reopening documents that were open in the previous session. You can toggle this option in Tools > Options > Projects > Solutions > General.

Test performance. We significantly improved performance when running a few tests in a large solution with multiple test projects. In our lab, a solution with over 10,000 MSTests executed a single test up to 82% faster!

CPU Usage Tools performance improvements. We have a few notable improvements to highlight regarding the CPU Usage Tool. The CPU Usage tool in the Performance Profiler (ALT-F2) can now start in a paused state, which means that it will not collect any CPU usage sample stack data until it is specifically enabled. This makes the resultant amount of data much smaller to collect and analyze, in turn making your performance investigations more efficient. Once you start the target application, a monitoring display will show the CPU utilization graph and will allow you to control the CPU profiling and enable/disable sample data collection as many times as you like.

Pause / Resume Collection of CPU Usage Data

.NET Object Allocation Tracking Tool. The .NET Object Allocation Tracking Tool joins the family of tools available from the Performance Profiler (ALT-F2). Invoking this tool for a performance profiler session causes the collection of a stack trace for every .NET object allocation that occurs in the target application. This stack data is analyzed along with object type and size information to reveal details of the memory activity of your application. You can quickly determine the allocation patterns in your code and identify anomalies as well. In addition, for Garbage Collection events, you can easily determine which objects were collected and which were retained, quickly determining object types which dominate the memory usage of your application. This is especially useful for API writers to help minimize allocations. While your test application is executing, the Performance Profiler displays a monitoring view with a line graph of Live Objects (count), as well as an Object Delta (% change) bar graph.

The .NET Object Allocation Tracking Tool

C++ Development

C++11 standards conformance. A new, experimental, token-based preprocessor that conforms to C++11 standards (including C99 preprocessor features), enabled with /experimental:preprocessor switch. This will be controlled with macro _MSVC_TRADITIONAL, which will be defined to 1 when using the traditional preprocessor and 0 when using the new experimental standards conformant preprocessor.

CMake. Adding configurations to CMakeSettings.json is now as simple as selecting a template.

C++ Just My Code. C++ Just My Code debugging enables you now to step-over code from system or 3rd party C++ libraries in addition to collapsing those calls in the call-stack window. You get to control this behavior for any C++ libraries when your code is compiled with /JMC (the default for Debug configurations) and the non-user libraries paths are specified in a .natjmc file. If the system library calls into user-code, when you step in, the debugger will skip all system code and will stop on the first line of user-code callback.

Code analysis experience. Code analysis can now run in the background when files are opened or saved, and results will be displayed in the error list and as green squiggles in the editor. You can enable the new, in-progress features under Tools > Options > Text Editor > C++ > Experimental > Code Analysis.

Code analysis results displayed in the error list and as green squiggles in the editor

F# 4.5 and F# Tools for Visual Studio

F# language version 4.5. In this release we are introducing the F# language version 4.5. This also corresponds with the new 4.5.x family of FSharp.Core (the F# core library). With this come many improvements to the F# compiler. You can read the specs for each of these changes in the F# RFC repository.

F# Tools for Visual Studio. Some notable improvements include IntelliSense performance, transactional brace completion, an experimental CodeLens implementation, and may bug fixes contributed by the community. A community-driven effort to analyze and improve IntelliSense performance for very large files was contributed by Vasily Kirichenko, Steffen Forkmann, and Gauthier Segay. IntelliSense in very large files (10k+ lines of code) is roughly twice as fast now. Automatic, transactional brace completion is now available for (), [], {}, [||], and [<>] brace pairs. We did this work in collaboration with Gibran Rosa. There is now an experimental CodeLens implementation, contributed by Victor Peter Rouven Müller. You can turn it on in Options > Text Editor > F# > Code Lens. Check out the release notes to see the many other bug fixes and improvements to F# Tools for Visual Studio with this release.

JavaScript and TypeScript Tooling

TypeScript 3.0. This version of Visual Studio includes TypeScript 3.0 by default.

Support for the Vue.js library has been improved, and in particular support for .vue files, also known as “single file components”. If the Node.js workload is installed, there will now be “Basic Vue.js Web Application” templates under the “JavaScript / Node.js” or “TypeScript / Node.js” paths in the New Project dialog. The below shows an example of editing TypeScript code inside a script block in a .vue file.

ESLint support. ESLint support has been reimplemented in this release. So, Visual Studio will now lint JavaScript files as you edit. ESLint has been updated to use ESLint 4 by default, but if your project has a local installation of ESLint, it will use that version instead. You can easi;y disable ESLint globally in VS by unchecking the “Enable ESLint” setting in the “Tools / Options” dialog in the location shown below.

Check out the TypeScript 3.0 release announcement for all the details.

Visual Studio Web Tools

Library Manager. Library Manager is a new feature included in Visual Studio 2017. It helps you manage client-side libraries in your web projects.

Single project Docker Container. We added a new single project Docker container experience for ASP.NET Core web projects. This supplements the existing Docker Compose-based container tooling and provides a simpler, easier way to create, debug, and build Docker containers right from Visual Studio.

Mobile Development for Android

Support for Google Android Emulator. This release adds support for the Google Android emulator that is compatible with Hyper-V when running on the Windows 10 April 2018 Update. This enables you to use Google’s Android emulator side-by-side with other Hyper-V based technologies, including Hyper-V virtual machines, Docker tooling, the HoloLens emulator, and more. Mobile app developers who use Hyper-V now have access to a fast Android emulator that always supports the latest Android APIs, works with Google Play Services out of the box, and supports all features of the Android emulator, including camera, geolocation, and Quick Boot.

Xamarin-HyperV

Xamarin.Android Designer. We made significant improvements to the designer experience for Xamarin.Android. The highlight being, a split-view editor was introduced which allows you to create, edit, and preview your layouts at the same time

Anroid Designer Split View

.NET and ASP.NET

.NET Core SDK 2.1.400. Visual Studio 15.8 includes .NET Core SDK 2.1.400. New SDK features include added NUnit templates, added support for signed global tools, and improved help text for better clarity

ASP.NET .NET Framework Secrets Support. For ASP.NET, .NET Framework projects that target .NET Framework 4.7.1 or higher, you can now open and store secrets you do not want in your source code in usersecrets.xml by right clicking on the project and selecting “Managed User Secrets”.

.NET Framework 4.7.2. Visual Studio 2017 version 15.8 now offers the .NET Framework 4.7.2 development tools to all supported platforms with the 4.7.2 runtime included. The .NET Framework 4.7.2 offers several new features and improvements as well as numerous reliability, stability, security, and performance fixes. You can find more details about the .NET Framework 4.7.2 in these articles:

Share Your Feedback

As always, we want to know what you think. Please install Visual Studio 2017 version 15.8 and share your thoughts and concerns.

Please let us know any issues you have via the Report a Problem tool in Visual Studio. You can track your issues in Visual Studio Developer Community where you can ask questions and find answers. You can also engage with us and other Visual Studio developers through our new Gitter community (requires GitHub account), make a product suggestion through UserVoice, or get free installation help through Live Chat Support.

Thanks,

John

Author

John Montgomery
Corporate Vice President

John is Corporate Vice President of Program Management for Developer Tools and Services at Microsoft. He is responsible for product design and customer success for all of Visual Studio, Visual Studio for Mac, Visual Studio Code, .NET, C#, C++, F#, VB, JavaScript, TypeScript, Java, Go, Node.js, Python, Engineering Systems, User Experience Design, Customer Research, Windows tooling, and Azure tooling. John has been at Microsoft for 17 years, working in developer technologies the whole time.