August 16th, 2022

What’s New in Visual Studio 2022 17.4 Preview 1

Marc Goodner
Program Manager

We released Visual Studio 2022 17.4 Preview 1 last week alongside the 17.3 generally available release. In this post we’ll share details about some of the new capabilities in this preview and the focus of this release. Feedback from developers like you during our preview cycle is so important for us to deliver a final product that meets your high expectations. We welcome your feedback in the threads to this post or through Developer Community. Please continue to share your suggestions for new features or improvements to existing ones and any bugs or issues via report a problem.

17.4 Preview 1 also adds new features as based on your suggestions in Developer Community. Here’s a list of the items that we are shipping as part of this preview.

Enterprise Support

We continue to invest in Visual Studio to provide capabilities that enable your development needs, your team, and those of your organization. Version 17.4 will be the third long term servicing channel (LTSC) for Visual Studio 2022.  Servicing channels provide large organizations with increased flexibility over when they choose to adopt new features released with minor version updates to Visual Studio editions. The 17.2 LTSC release will be supported until January 9, 2024.

Arm64

During the Microsoft Build 2022 conference the Windows team announced a new development kit with AI Capabilities, Project Volterra, and the development of comprehensive Arm-native developer toolchain. We are excited to bring Visual Studio to our developer community using Windows 11 on Arm64 devices. Version 17.4 will be the first version of Visual Studio generally available as a native Arm64 application. Our first  Arm64 preview of Visual Studio launched with three Workloads available. Preview 1 adds the availability of the UWP workload.  For C++ we now bundle Arm64 native versions of CMake and Ninja with Arm64 releases. We will continue adding more workloads in previews (based on your feedback) until we GA later this year. You can vote here to help in prioritizing additional workloads, components, and experiences.

Configure Visual Studio using Visual Studio Administrative Templates (ADMX/ADML files)

We heard from many of you in large organizations that use Visual Studio you often want to control certain aspects of VS behavior to achieve consistency, compliance, or compatibility across your organization.  One problem that currently exists is that there is no easy way for an admin to even discover what all global polices exist for Visual Studio. Because there’s no centralized repository that captures the Visual Studio policy options, there’s also no consistent method for all users to deploy the settings using standard management and deployment tools such as Group Policy Editor and Microsoft Endpoint Manager, which results in a lot of duplicated, inefficient, and sometimes incorrect effort.

To address this, we are pleased to announce the availability of the new Visual Studio Administrative Templates (ADMX/ADML) files which are in Preview right now.  The Visual Studio group policy settings contained in the ADMX file are machine wide for all users, which means that they intend to cover all applicable installed instances and SKUs of Visual Studio. IT Admins should be familiar with the ADMX approach as it’s analogous to what Office and Windows does.  Please review the content of these and provide feedback on the Preview Visual Studio ADMX Templates here.

Removing out-of-support components

Visual Studio is a rich IDE that provides an abundant collection of tools and functionality for you to use in every stage of software development. As we all know, technologies change over time, some faster than others; consequently certain components that are initially included with Visual Studio may go out of support faster than the IDE itself.  When a component transitions to “out of support”, it will not receive any future updates, which essentially means that it becomes insecure.

We’re happy to announce that now, using the latest Visual Studio 2022 installer, it will be possible to automatically remove all independent components from your installation that have transitioned to an “out of support.” state. You will be able to do this manually through the UI, programmatically, or by machine wide policy, and you’ll be able to manage both your client machines and your layouts. This functionality can also be extended to your Visual Studio 2019 and 2017 installations.  By using this new feature when you perform updates, you will be better able to keep your machine secure.

Details about how to use this functionality are described here.  We encourage you to try it out and look forward to hearing your feedback on this Preview!

Collaboration and Teams

Visual Studio enables collaboration for developers whether that is between individuals, part of contributing or using open source projects, and enabling your team to accomplish more.

Git Tooling

You can now untrack and ignore tracked Git files from both Solution Explorer and Git Changes tool windows.

Ignore and un-track from the Git Changes and Solution Explorer

We have enhanced the user experience of trusting single and multiple Git repositories by improving repository status and utilizing a new trust dialog. This enhancement addresses a recent Git security update that requires users to trust repositories owned by different users.

We have also made performance enhancements when switching git branches. For more information read our Git Branch Switching Blog.

Code Search

This release introduces performance, reliability, and UI enhancements to the All-In-One Search experience (Ctrl + Q). Now you can preview code and images before opening a result by selecting the window icons at the top right of the window. As we continue to work on performance and reliability, results that can be previewed will be temporarily limited to only files (not types, members).

You can enable All-In-One Search: Tools > Manage Preview Features > “New Visual Studio Search experience (restart required)”.

Selection Match Highlighting

The selection match highlighting is a new feature to help you quickly find additional occurrences of a string in the document you’re editing. In Tools\Options, check Text Editor > General for the new “Show selection matches” option. When it’s checked, any time you select something in your editor, anywhere else that exact string occurs will be subtly highlighted both in the editor and in the scrollbar. Currently, it only works for strings less than 200 characters in length and all on a single line, but our goal is to make it easier to notice when and where a string is in use.

A capture from Visual Studio showing the Selection Match Highlighting. The string "Catalog" is selected on line 47, and all instances of the string "Catalog" are highlighted in blue. The scrollbar on the right also shows grey ticks indicating where other matches can be found throughout the document.

We intentionally chose subtle colors since we found brighter colors to be distracting, but if you want to change the colors, you can find “Selection Match Editor Highlight” and “Selection Match on Scrollbar” in the Fonts and Colors page of Tools\Options. Both of these are “Text Editor” settings.

Productivity

Visual Studio has always been about developer productivity. We are constantly adding new language features to help you do more in your core edit-debug loop.

.NET

You can now easily view a file’s structure at a glance in the Document Outline window. The Document Outline window displays the symbol tree of the file in the editor helping you quickly navigate and edit project files. You can open Document Outline by going to View > Other Windows > Document Outline or by using the shortcut Ctrl+Alt+T.

Document Outline window screenshot

C++

Based on your feedback there is a new option “Navigation after Create Declaration/Definition” to allow you to choose the navigation behavior of the Create Declaration/Definition feature. You can select between peeking (the default) or opening the document, or no navigation.

In addition to ARM64 VS bundling ARM64 versions of CMake and Ninja we have added support for CMake Presets in version 4. See the CMake release notes for details of what is available.

For cross platform C++ development connecting to remote systems with the Connection Manager  now supports SSH Proxy Jump. This is used to access a SSH host via another SSH host (for example, to access a host behind a firewall).

We continue to track the latest developments in C++ standardization. In 17.4 Preview 1 we have added support for the following C++ 23 features. You can enable these by including /std:c++latest in your compiler options.

  • P0849R8 auto(x): decay-copy In The Language
    • The compiler part is not yet implemented; the library part was implemented in C++20 mode when Ranges were initially implemented.
  • P0881R7 <stacktrace>
  • P2301R1 Add A pmr Alias For std::stacktrace
  • P1328R1 constexpr type_info::operator==()
  • P2440R1 ranges::iota, ranges::shift_left, ranges::shift_right
  • P2441R2 views::join_with

F#

Tooltips for local functions now show argument names.

F# tooltips for local function arguments screenshot

Share your feedback and help us build a better Visual Studio!

As you use Visual Studio, let us know what you love, what you like, and where you’d like us to improve. You can share feedback with us via Developer Community: report any bugs or issues via report a problem and share your suggestions for new features or improvements to existing ones.

As always, we appreciate the time you’ve spent reporting issues and hope you continue to give us feedback on how we’re doing and what we can improve.

Author

Marc Goodner
Program Manager

I am a Program Manager on the C++ team at Microsoft working on developer experiences for Azure Sphere, embedded, IoT, and Linux in Visual Studio.

22 comments

Discussion is closed. Login to edit/delete existing comments.

  • Igor Karatayev

    All these features are great, but I hope oned day Visual Studio will have an option to:
    1) Auto stop debug and close app on Visual Studio close
    2) Auto save open files on Visual Studio close and stop preventing Windows shutdown process.
    3) Auto cancel current build if Ctrl+B is pressed while build is running.

    Just some small things. Also many error messages a barely readable on dark theme

  • nick

    When I tried to use the debugger for the problem caused by wp Rocket plugin, it did not work! for this webiste code.

  • Kevin Olinger

    What is the status of the Team Foundation Server source control plug-in on ARM64? It is missing from this release.

  • MD Idiake · Edited

    Hi.

    i just updated to VS 17.3.2 and when trying to archive a project that I previously successfully archived, and even successfully just compiled it, it is giving the following error:

    Severity Code Description Project File Line Suppression State
    Error Mono.Linker.MarkException: Error processing method: 'System.Void Microsoft.AspNetCore.SignalR.HubConnectionContext/d__47::MoveNext()' in assembly: 'Microsoft.AspNetCore.SignalR.Core.dll' ---> Mono.Cecil.ResolutionException: Failed to resolve System.ReadOnlyMemory`1 Microsoft.AspNetCore.SignalR.Protocol.HandshakeProtocol::SuccessHandshakeData
    at Mono.Linker.Steps.MarkStep.HandleUnresolvedField(FieldReference reference)
    at Mono.Linker.Steps.MarkStep.MarkInstruction(Instruction instruction)
    at Mono.Linker.Steps.MarkStep.MarkMethodBody(MethodBody body)
    at Mono.Linker.Steps.MarkStep.ProcessMethod(MethodDefinition method)
    at Mono.Linker.Steps.MarkStep.ProcessQueue()
    --- End of inner exception stack trace ---
    at Mono.Linker.Steps.MarkStep.ProcessQueue()
    at Mono.Linker.Steps.MarkStep.ProcessPrimaryQueue()
    ...

    Read more
  • Anonymous

    Give us an open source .NET debugger. We have a open source runtime and SDK but not debugger.

    Make Visual Studio available for Linux and Mac. VS Code is good, but it is no Visual Studio.

  • Anil Mahadev

    Awesome! Testing this out on Windows 11 ARM Preview as we speak…

  • Juliano Goncalves

    Still on the '.gitignore' integration. Does it allow you to select many files/folders at the same time and then ask to exclude them? Does it then list each individual file/folder in '.gitignore', or does it add a single entry with a generic match that captures all selected items? The latter would be nice to avoid clutter in the '.gitignore' file.

    Additionally, it would be cool to see an option such as "ignore files like this" when selecting a file, which would then give you options such as "ignore all files with this extension" or "ignore all files in the same folder...

    Read more
  • Juliano Goncalves

    Regarding the `.gitignore` integration there, will it be smart enough to detect the “closest .gitignore file in the hierarchy” when adding the ignore statements? Since you can have a ‘.gitignore’ file at any level of the directory hierarchy, you would probably want the exclusion to be added to the nearest file if it exists, instead of in the root ‘.gitignore’.

    I’ve not used the feature yet, just wanted to double check if you covered that scenario since it wasn’t mentioned in the article.

  • groophy lifefor

    I think there should be more focus on memory diagnostics.