What’s New in Visual Studio 2022 17.4 Preview 1
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.
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.
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.
You can now untrack and ignore tracked Git files from both Solution Explorer and Git Changes tool windows.
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.
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.
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.
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.
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.
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
Tooltips for local functions now show argument names.
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.
You say feedback is important, but mine got ignored.
Early in preview of 17.3. I submitted a regression which prohibits using 17.3. for production use with a simple repro; but nothing happened and the bug is still in 17.3. aus well as in 17.4. So you didn’t meet my even low expectations.
Same feeling here. I keep having issues with the app.config that is not properly copied to the output folder when a change occurred and a build is performed. You need to make a (costly) “Rebuild”. This bug has been there for years, reported by many people in different tickets !
Why not license IntelliJ IDEA from JetBrains like Google does with Android Studio. You’ve already done it with IE, and everyone was fine with it. There would be an IDE from Microsoft called Windows Studio and there would still be Rider maintained by JetBrais. If you are a Microsoft fan, you would use your IDEs, if you are not, you will still use Rider.
Visual Studio directly invokes the compiler itself to provide syntax services, and the compiler version can be easily replaced with nightly builds. JetBrains Rider implements a parser and syntax model itself that is always behind the compiler and has inconsistency. Without major refactor of the architecture, Rider simply can’t be suitable for development with preview features.
Anything from JetBrains is banned at our organization due to security concerns.
I’d hate to lose the use of Visual Studio because of that.
Pity, but Rider is worse than VS. I installed it 3 times and always DELETE after 15 min. Impossible to work! So many items, lines, icons… looks like NY christmas tree. And usability also below expectations. I prefer “a bit buggy” VS over Rider. Just my experience.
All this git integration is very cool!
Also, I am happy to see F# getting improvements and better support on Visual Studio 2022.
I have some F# code in production and it is very stable, almost no revision was needed on this code and had no bugs until now!
When will the awful Start Modal be deleted and we get the old startup experience back?
Go to Tools/Options/Environment/General, and change the “On startup, open:” dropdown from “Start window” (which you dislike) to “Most recent solution” or “Empty environment”.
Please add the ability to debug remote Linux-ARM devices without having to manually deploy files, and manually attach the debugger. One should be able to simply configure the IP address and login credentials and press the “Play” icon, F5, whatever to debug a remote device in one motion. See also https://developercommunity.visualstudio.com/t/Convenient-way-to-add-a-remote-debug-con/917516
I think there should be more focus on memory diagnostics.
As in diagnosing why VS is eating up so much memory (or one of its 100s of processes) or diagnosing memory issues in your own apps? For your own apps there is [this blog](https://devblogs.microsoft.com/visualstudio/choosing-a-net-memory-profiler-in-visual-studio-part-1/) series that is looking at memory analysis.
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.
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 as this one” etc, which would generate generic exclusions in ‘.gitignore’.
Awesome! Testing this out on Windows 11 ARM Preview as we speak…
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.
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)
— End of inner exception stack trace —
at Mono.Linker.Steps.MarkStep.Process(LinkContext context)
at MonoDroid.Tuner.MonoDroidMarkStep.Process(LinkContext context)
at Mono.Linker.Pipeline.ProcessStep(LinkContext context, IStep step)
at Mono.Linker.Pipeline.Process(LinkContext context)
at MonoDroid.Tuner.Linker.Process(LinkerOptions options, ILogger logger, LinkContext& context)
at Xamarin.Android.Tasks.LinkAssemblies.Execute(DirectoryAssemblyResolver res)
at Microsoft.Android.Build.Tasks.AndroidTask.Execute() in /Users/runner/work/1/s/xamarin-android/external/xamarin-android-tools/src/Microsoft.Android.Build.BaseTasks/AndroidTask.cs:line 17 AbuseAlert.Android
So, what is going on? I am even as at now able to run the project in the android emulator without any issues.
What is the status of the Team Foundation Server source control plug-in on ARM64? It is missing from this release.
Thanks for the feedback, Kevin. Please feel free to add your vote to the following suggestion ticket: https://developercommunity.visualstudio.com/t/TFVC-tooling-ARM64-support/10137747?entry=suggestion&space=8
When I tried to use the debugger for the problem caused by wp Rocket plugin, it did not work! for this webiste code.
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