Visual Studio 2017 15.5 has just been released with several new features and improvements. Performance optimizations were a big part of this release including a halving of the time required to open C# or VB.net project. The biggest feature of interest for many mobile developers is the Xamarin Live Player, enabling you to develop using just Visual Studio plus an iOS or Android application.
Most notably, we have cut the solution load times for large C# and VB projects by half. The primary way we achieved this was by starting the design-time build process earlier and by batching the design-time build operations for all projects and executing them in parallel with other solution load operations. To see this in action, watch this video comparison loading the Orchard Content Management System solution before and after optimization.
Check out our detailed post to learn how we achieved this performance in large C# and VB projects. For those who missed the similar performance improvement we made for C++ projects in an earlier update check out this blog post on C++ solution load and build performance improvements.
Diagnostics. The Visual Studio debugger got considerably more powerful with the addition of step-back debugging, also known as historical debugging. Step-back debugging automatically takes a snapshot of your application on each breakpoint and debugger step you take, enabling you to go back to a previous breakpoint to view its state. Check out this post from Deborah that details out this capability and how to make the most of it – step-back while debugging with IntelliTrace. For more on diagnostics and debugging, also look at our post on lesser known debugging features.
Docker and Continuous Deployment. Visual Studio has featured good Docker support for a while. With this release we have taken it further. Docker containers now support multi-stage Dockerfiles. The continuous delivery features make it easy to configure Visual Studio Team Services to set up CD for ASP.NET and ASP.NET Core projects to Azure App Service
Secrets management. Visual Studio has added features to help identify and manage secrets like database connection strings and web service keys. We have a preview of support for credential scanning that can easily read through your source files to ensure you don’t unintentionally publish key secrets into your source repo. And the integrated support for Azure KeyVault gives you an easy place to publish those secrets (and get them out of your source code). Check out this post to learn how to manage secrets securely in the cloud.
Azure functions. The Visual Studio tools for Azure functions has gotten a notable improvement, with the ability to use .NET Core. Learn about added support for creating .NET Core Azure Functions apps, as well as improving the experience for creating new Function app projects.
Mobile development with Xamarin. A major milestone in this release for mobile development was the addition of the Xamarin Live Player, which enables developers to continuously deploy, test, and debug their apps using just Visual Studio and an iOS or Android device. This release adds support for Android emulators, enabling developers to preview real-time XAML changes directly in the Android emulator without requiring a re-compile and re-deploy.
We have also added the ability to File → New → Mobile App with Xamarin.Forms and .NET Standard, and migrated all project templates to use PackageReference for easy NuGet package management.
Unit Testing. We’ve improved the unit testing experience for both managed languages and for C++. C++ developers will notice integrated support for Google Test and Boost.test (add them through the Visual Studio installer in the desktop development workload). We already mentioned feature behind a feature flag called source-based test discovery that hugely improves test discovery performance. And the Live Unit Testing (LUT) is better integrated with the task notification center and now supports .NET Core (starting in Visual Studio 2017 15.3) as well as MSTest v1. Be sure to check out this post for an overview of the various text experience improvements in Visual Studio 2017 version 15.5.
Web development. If you are an Angular 2 developer you will now see errors, completions, and code navigation in inline templates and .ngml template files. See the sample repo for an overview and instructions. Other updates in the web space include improvements to Razor syntax formatting and improvements in the workflow for publishing ASP.NET applications to Azure Virtual Machines.
Visual C#. VS 15.5 adds support for C# 7.2 features like Span<T>, the readonly struct modifier And the private protected access modifier.
Visual C++. We already talked about the support for Google Test and Boost.test, and C++ developers will also see improvements to the Standard Template Library for C++ 17 standards. Check out the Open Standards website. The VC++ compiler supports 75% of the C++ 17 features. In addition, the team has added new optimizations to the compiler.
Visual F#. We added .NET Core SDK project support to the F# tooling so you can now create new .NET Core console apps, .NET Standard libraries, and .NET Core unit test projects from File > New Project, for example, and we added support for project-to-project references. You can also you can now right-click Publish tooling with Web SDK projects and the continuous delivery features will now autogenerate a CI/CD pipeline with Visual Studio Team Services tooling.
Source control. You can now work with Git submodules and worktrees, and configure
pull.rebase in Team Explorer. Visual Studio now treats Git submodules and worktrees like normal repos. Just add them to your list of Local Repositories and get coding!
Reliability. The Visual Studio Installer now supports modification and uninstallation of each entry, improving the installer experience. On the note of the crashes caused by the PenIMC.dll that some of you may have run into, Windows is currently working on a root fix. Meanwhile, we wanted to ensure we helped those of you still running into crashes when trying to scroll, click, or interact via touch in Visual Studio. To activate the workaround, disable touch scrolling by checking the “Disable Touch Scrolling” under Tools > Options > Environment > General and restart Visual Studio.