What's New in Visual Studio 2019 v16.5 Preview 2
The second preview of Visual Studio 2019 v16.5 has arrived with improvements across the flagship IDE, including the core experience and different development areas such as C++, Python, web, mobile and so on.
Here's a look at some of the highlights in those major areas:
Core IDE experience
- A new Per-Monitor Awareness (PMA) preview feature introduced in preview 1 is now enabled by default for users that meet the system requirements. "Alongside the core IDE, multiple tool windows such as Toolbox, Breakpoints, Watch, Locals, Autos, and Call Stack should now render sharply across monitors with different display and scale configurations."
- Search capabilities have improved in the start window and inside the IDE. In the start window, developers can now search for project templates by language, platform, and tags via the search box. Also new are filters for menus, components, and templates during IDE searches, along with the ability to create and add new projects and items right from the search box.
- In response to developer feedback, the new blue theme has been updated with less luminosity and more contrast.
- A new version of the MSVC compiler is available, along with several libraries for different functionality, along with improved CMake integration.
- More C# 8.0 language features were added to those introduced in the first preview. "Most notably, C# 8.0 pattern matching now allows recursive patterns, which can dig into the structure of an object, and switch expressions, which are a lightweight expression version of switch statements."
- Preview 2 sports a preview of F# 4.6, with more details on that version available here.
- "Additionally, we’ve revamped how the F# language service is initialized by Roslyn, which should result in a consistently faster solution load time for larger solutions."
- New refactoring and codefix capabilities, such as sync namespace and folder name, pull members up, invert conditional expressions/logical operations, and many more, are available. "We’re also gradually rolling out new classification colors which are similar to Visual Studio Code. You can control these via Tools > Options > Environment > Preview Features."
- Project files for .NET SDK-style projects are now a first-class file type, allowing for double-clicking a project node to open the project file and finding a project by name with Go To All (Ctrl + T).
- "Code cleanup also now enables you to save collections of fixers as a profile. Now, if you wanted to apply a small set of targeted fixers frequently while you code and have another more comprehensive set of fixers to apply before preparing for a code review, you can configure profiles to address these different tasks."
- Developers can switch different Python interpreters using the new Python Environments toolbar.
- Miniconda is an optional component during installation, obviating the need for separate installations to create conda environments. "Additionally, you can now create Visual Studio Live Share sessions for collaboration on Python code. Check out the Python in Visual Studio 2019 Preview 2 blog post for more details."
Web and container development
- For containers, preview 2 supports debugging ASP.NET Core applications that use Alpine as a base image. The latest ASP.NET and .NET Core images are also supported.
- Visual Studio Kubernetes Tools are now integrated in the Azure development workload, allowing for easier installations. "This will add the Container Application for the Kubernetes project template to Visual Studio, which will automatically create a Dockerfile and Helm chart that you can use. This also enables you to add support for Kubernetes to an existing ASP.NET Core application by right-clicking the project and selecting Add > Container Orchestrator Support. After adding Kubernetes support, you can build, run, and debug your application in a live Azure Kubernetes Service (AKS) cluster with Azure Dev Spaces."
Mobile .NET development
- Xamarin developers will see improved build performance when coding for Xamarin.Android 9.1.1 or higher. "Xamarin.Android now also supports the latest Android dex compiler (d8) and code shrinker (r8). The Android designer now natively supports Android Pie (9.0) and will show you improved status when loading. You can also use Go-To-Definition (Ctrl + Click) on resource URLs to navigate to the file or line where they are defined."
- A new property panel is available for Xamarin.Forms developers, enabling the editing of common attributes for controls. "The Xamarin.Forms templates now use the latest Xamarin.Forms 4.0 release and include a new Xamarin.Forms Shell app that aims to reduce the complexity of a multi-platform app solution."
- Load performance for new projects has been improved dramatically, resulting in performance gains of up to 50 percent in some scenarios. "When building apps, you can now also see more detailed build progress information by clicking the background tasks icon in the bottom left of the IDE." More information is available in the "what's new for Xamarin developers" post, which summarizes that newness as:
- Xamarin Hot Restart: Test changes made to your app, including multi-file code edits, resources, and references. While also using a much faster build and deploy cycle. With Hot Restart, debug your iOS app built with Xamarin.Forms on a device connected to your Windows machine. This allows for a much faster inner development loop.
- Android Apply Changes: Quickly see changes made to your Android resource files. Such as layouts, drawables, etc., on an Android device or emulator without requiring the application to be restarted.
- Faster Android Startup: Generate your own custom profiles using startup tracing in your Android application. Providing improved application start-up with a minimal increase in app size.
- XAML Document Outline: See the hierarchy of your Xamarin.Forms UI in the "Document Outline" pane.
More information on all of the above is available in greater detail in the Jan. 24 announcement blog post and the release notes.
David Ramel is an editor and writer for Converge360.