Today at Build, we announced the release of Visual Studio 2017 version 15.7 and the first preview of the next update, Visual Studio 2017 version 15.8 Preview 1. If you would rather try these without installing them, check out the Visual Studio images in Azure that will be available soon.
Before digging in, I’d like to call out other Visual Studio and .NET news:
- We have a generally available release of Visual Studio 2017 for Mac version 7.5, our IDE for cloud, mobile, and game development on macOS.
- We have a release candidate for .NET Core 2.1, our cross-platform, open source .NET implementation.
- We published the .NET Core 3 roadmap; .NET Core 3 is the next major version of .NET Core and includes support for WPF, Windows Forms, and UWP on Windows.
- We have a generally available release of Xamarin.Forms 3.0 for productive mobile development
There are also two really interesting previews I’d call your attention to:
- We have a public preview of Visual Studio Live Share, our real-time collaboration system for developers
- We have a private preview of Visual Studio IntelliCode, our new AI-assisted development capabilities
We will publish blog entries on these soon, and as we do we’ll update this post with the links.
There is a lot we have accomplished in this release and I’ll share the highlights in this post. It is a long post, so grab a cup of your preferred warm beverage and read on. For the complete list of all the updates in today’s releases, check out the Visual Studio 2017 version 15.7 release notes and list of bugs submitted by you that are fixed.
Installer Updates
One of the first things you’ll probably notice is a nice change to the way updates work. You can now initiate a check for updates (Help -> Check for Updates) and, after you save your work and choose “Update Now,” Visual Studio will automatically apply the update and reopen where you left off.
Starting with this release, you can reduce the installation footprint on your system drive by directing the download cache, shared components, and some SDKs and tools to separate locations. Because these pieces are shared among Visual Studio installations, you can only set the locations with your first installation, meaning that you can’t change them later. If you have a solid-state drive (SSD), we recommend that you install the Visual Studio core product on your SSD because this will make Visual Studio run significantly faster.
Performance Improvements
We’ve done a lot of work on Visual Studio performance during the Visual Studio 2017 cycle, particularly things like solution load (see this post for some of the most recent improvements), but we’re making continual improvements. Here are a few other improvements to performance in this update.
UI Responsiveness: One change that will improve general UI responsiveness in version 15.7 is that the debugging windows are now asynchronous. This means that they will no longer block Visual Studio as they do work. This change will allow for faster stepping because you can continue interacting with Visual Studio without interruption.
.NET mobile performance improvements: Visual Studio will boot and deploy the Xamarin runtime on your device while a compile is taking place. This reduces the time that you have to wait to see your app show up. With our test app, on a fresh device and no previous deployment, including launching the Android emulator, we see performance gains ranging between 33% to 300% depending on the scenario.
TypeScript Performance: We’ve made background analysis of closed files optional (“Only report diagnostics for files opened in the editor” under Tools > Options > TextEditor > JavaScript/TypeScript / Project).
Editor Productivity Improvements
With each release, we add capabilities that improve developer productivity, particularly focusing on that “inner loop” of editing, building, and debugging.
.NET Refactorings and Navigation: Every release, we increase the number of refactorings and improve navigation for our managed languages. In Visual Studio 2017 version 15.7 we added the following refactorings:
- Toggle between foreach loop and for-loop (C# and Visual Basic)
- Make private field read only (C# and Visual Basic)
- Convert LINQ query expression into a foreach loop (C#)
- Convert implicit type to explicit type (C#)
We also enabled Go To Definition (F12 or Ctrl+Click) in more scenarios, like on LINQ query clauses, deconstructions, and on the ‘override’ keyword (to navigate to base).
XAML IntelliSense: The XAML editor now provides IntelliSense for authoring conditional XAML. When using a type that is not present in the target-minimum version of your app, the XAML editor now not only warns but also provides several options to fix it. The quick fix Lightbulb figures out the right conditional using statement based on the platform version where the type was first introduced, allowing the app to target a wider range of platform versions while being able to consume the latest controls.
Xamarin.Forms XAML Editing Improvements: If you use Xamarin.Forms in Visual Studio 2017 version 15.7 you will notice a vastly improved IntelliSense experience when editing XAML. The Xamarin.Forms XAML editing experience is now powered by the same engine that powers WPF and UWP. This brings many enhancements including improved matching, Lightbulb suggestions, code navigation, error checking, resource completion, and markup extension completion.
TypeScript Editing and TypeScript 2.8: Visual Studio 2017 version 15.7 will include TypeScript 2.8. We’ve continued our push to help make TypeScript and JavaScript developers more productive by adding support for fixing all occurrences of a problem in a document (for example, removing unused variables), organizing imports (including sorting and removing unused declarations), and displaying the lightbulb more proactively when optional improvements are possible. We’ve also fixed some of the top issues that you have raised, including premature triggering of snippets, un-cancellable refactorings, hard-to-disable formatting, and incorrect TypeScript version selection. These improvements are powered by TypeScript 2.8, so for the best experience, we recommend updating your existing projects to use the latest TypeScript version.
C++ ClangFormat: We’ve added ClangFormat support for C++ developers in the IDE. Like with EditorConfig, you can use ClangFormat to automatically style and format your code as you type, in a way that can be enforced across your development team. For more information, see the ClangFormat Support blog post.
C++ CMake: This release of Visual Studio includes features to make it easier than ever to use CMake without needing to generate projects and Solutions. The new CMake CMake Targets View provides an alternative way to view a CMake project’s source in the Solution Explorer; instead of a folder-based view, it organizes the code into individual CMake targets. Additionally, CMake projects now support single file compilation and static analysis of C++ code, without the need to generate a VCXProj file. The version of CMake that ships with Visual Studio has also been upgraded to 3.11.
C++ Standards Conformance: And last, but not least in this section, I want to highlight that Visual C++ is now conforming to C++11, C++14, and C++17. Yes: the MSVC compiler toolset in Visual Studio version 15.7 conforms with the C++ Standard! We’re not going to stop there with our conformance effort. Expect to see more future communications from our team as we alleviate the remaining caveats. More details are available at the Visual C++ Team Blog post on how MSVC conforms to the C++ Standard.
Debugging and Diagnostics
IntelliTrace Events and Snapshots for .NET Core: IntelliTrace’s new step-back debugging feature, which we first shipped in Visual Studio 2017 version 15.5, is now supported for debugging .NET Core applications. The feature automatically takes a snapshot of your application on each breakpoint and debugger step. This enables you to go back to a previous breakpoint or step and view the state of the application as it was in the past. To enable this feature, go to Tools > Options > IntelliTrace settings > and select ‘IntelliTrace events and snapshots’. IntelliTrace step-back is a Visual Studio Enterprise feature available on Windows 10 Anniversary Update or above for debugging .NET applications.
Source Link Authentication: The debugger now supports authenticated Source Link requests for Visual Studio Team Services and private GitHub repositories. When debugging code that was built on another computer, such as a library in a NuGet package, Source Link enables the debugger to show correctly matching source code by downloading it from the internet. To build your own code with Source Link enabled see https://aka.ms/SourceLinkSpec. For VSTS repositories, authentication is provided by signing into Visual Studio. For GitHub, we leverage credentials from the GitHub extension for Visual Studio and the Git Credential Manager for Windows. If Source Link fails due to an authentication error a new “Source Link Authentication Failed” page is shown to explain the issue. This page allows you to login to VSTS or GitHub and retry the Source Link request.
Edge Debugging: Visual Studio ASP.NET and ASP.NET Core developers on Windows Insider builds can now set breakpoints and debug their JavaScript files using Microsoft Edge browser. Visual Studio will use the new Edge DevTools Protocol developed by the Microsoft Edge team when targeting Microsoft Edge browser, which means that developers will be able to debug and fix JavaScript issues from within Visual Studio in both Microsoft Edge and Google Chrome. We are glad to enable this oft-requested feature from our customers and would love to hear what you think about it.
Mobile Development
We’ve made many improvements to the mobile development experience, some listed elsewhere in this post, but for the core platform support, here are a few.
Android Development Improvements: We are now distributing the Android Oreo SDK (Android API level 27) and are shipping the Android emulators with Quick Boot enabled. Additionally, Visual Studio will now detect scenarios where the project requires a different version of the Android SDK that is installed and will download required components in the background.
Apple Development Improvements: The iOS, macOS, tvOS, and watchOS apps now feature a fully static type system. This brings many benefits, such as smaller app size, faster app startup, and reduced memory usage. We have also introduced the [Weak] attribute for fields that make it simpler to write code that is garbage collection friendly in Apple platforms. The provisioning of iOS devices has historically been a chore, requiring multiple trips to the documentation. We have incorporated the same experience that we shipped on macOS and you can now provision your devices in seconds and keep your entitlements up to date with the click of a button.
ASP.NET, Cloud, and Web Development
Visual Studio 2017 version 15.7 is the recommended version of Visual Studio to use with .NET Core 2.1 and has a bunch of new features like a new managed socket implementation and various improvements like better support for HTTPS. It doesn’t matter which you install first, either way Visual Studio version 15.7 will find .NET Core 2.1 and offer it as an option.
Deployment to Azure App Services on Linux: Visual Studio now offers you the ability to deploy non-containerized applications to Azure App Service on Linux in addition to our previous support for apps built with Docker. To publish your application to App Service and run in Linux, from the Publish dialog choose “App Service Linux” and select “Create new.” To continue to publish a containerized application to App Service for Containers using Linux, choose “Create new App Service for Containers.”
Key Vault Connected Service: Please don’t store your application keys in your app – if possible use Azure Key Vault. We’ve made it easier in this release with the Connected Service experience – using it will add the right configuration the NuGet packages to your project and enable you to access secrets from the Key Vault. Once the Key Vault has been added, you will be able to manage secrets and permissions through the Azure portal. This is available for both ASP.NET and ASP.NET Core applications. We’ve also made it easier to use Key Vault during development: when running an ASP.NET or ASP.NET Core application on the local machine, the app may not have access to the Key Vault from the account specified under Tools > Options > Azure Service Authentication, so it won’t be able to run locally. Visual Studio detects that case and flags it for you with an error.
Universal Windows Platform Development
We have included the Windows 10 April 2018 Update SDK, Build 17134 as the new required SDK associated with the Universal Windows Platform workload. We have also added support for generating Windows Machine Learning class wrappers for an ONNX file that is added to a UWP project.
Automatic updates for sideloaded UWP apps: The Universal Windows Platform allows distributing applications without the Microsoft Store by using a mechanism called “sideloading.” With Visual Studio 2017 version 15.7 using the latest Windows 10 SDK there is now tooling to easily configure the automatic update settings for these UWP apps.
Loading code from C# Optional Packages: You can now create a new “Optional Code Package” Universal Windows project type. This project allows you to author C# code to be loaded in the context of the main application package when creating a related set. Learn more about creating C# Optional Code Packages.
Visual Studio 2017 version 15.8 Preview 1
In addition to Visual Studio 2017 15.7, we also have a Preview of 15.8 (the release notes are here). To install, you can get the preview here, or if you already have a prior Preview installed, either click on the in-product notification or check for an update directly. Previews of Visual Studio 2017 install side by side with generally available releases, so you can try the preview at the same time you have the GA version for your main coding work. Alternatively, with an Azure subscription, you can provision a VM with Visual Studio 2017 on it through the Marketplace. C++ Quick Info Tooltips: C++ Quick Info tooltips on macros now show what they expand to and not just their definition. This is particularly useful for complex macros that reference other macros, as it’s now clear what the macro identifier will be replaced with by the preprocessor. See an example of what the tooltip now displays in the picture below.
Docker Single Project Experience: In this Preview, we’ve added a new single project Docker container experience for ASP.NET Core web projects, which builds on top of the existing Docker composed-based container tooling and makes it easy to create, debug, and build Docker containers right from Visual Studio. You can either add Docker support when creating the project, or you can add it to an existing project through right clicking on the project’s context menu in Solution Explorer. For more details on how to utilize this feature, please refer to the Visual Studio 2017 version 15.8 Preview 1 release notes.
LibMan – New Client-Side Library Manager for Web Apps: We are implementing a new tool for managing client-side libraries, colloquially known as “LibMan.” Designed as a replacement to Bower, LibMan allows you to easily acquire and manage static, client-side files for your web project from various sources, including CDNJS. You can read more about it in the post: Library Manager: Client-side content manager for web apps.
Share Your Feedback
As always, we want to know what you think. Please install Visual Studio 2017 version 15.7 and Visual Studio 2017 version 15.8 preview 1 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