Visual Studio 2022 17.4 Preview 2

Marc Goodner

We have released Visual Studio 2022 17.4 Preview 2. In this post we’ll share details about features added since Preview 1. 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.

We’ve addressed a number of your top-reported bugs in this release and added new features based on your suggestions in Developer Community. Thank you for your continued feedback. Here’s a list of your suggestion we are shipping as part of this preview.

Enterprise Support

In April 2021, Visual Studio started making updates available for IT administrators to deploy throughout their networked organization using WSUS and SCCM.  We’re happy to announce that Visual Studio security updates will soon become available to modern cloud connected Azure Active Directory (AAD joined) devices that use Windows Update for Business (WUfB) and are managed by mobile device management solutions such as Microsoft Endpoint Manager (formerly known as Intune).  You can now “preview” this experience and receive our September 2022 security releases on AAD joined devices by doing the following:

  1. Enable and enroll the cloud connected AAD joined device into Windows Update for Business. In particular, the AllowMUUpdateService policy must be turned on.
  2. Enable the Visual Studio policy AdministratorUpdatesEnabled on the client machine.
  3. Create the temporary REG_DWORD key on the client: HKLM\SOFTWARE\Microsoft\VisualStudio\Setup\PreviewAutomaticUpdates = 1

If the WUfB client device is configured to receive Visual Studio updates as described above, then when the Windows check for updates event occurs, Visual Studio updates will be downloaded and installed.

Screenshot of Windows Update with Visual Studio updates

There are a few important details about this new Visual Studio update experience for cloud connected WUfB devices that you should be mindful of. These updates are delivered through the Windows Update advanced option to “Receive updates for other Microsoft products”; hence the need to enable the AllowMUUpdateService policy. WUfB treats these updates from other Microsoft products as Quality updates, so they should respect all the other WUfB Quality update policy settings. If Visual Studio is in use, then the update will be blocked and will likely retry at a later point depending on your WUfB settings. And finally, at least for now, only security updates for all supported versions of Visual Studio will be delivered through this mechanism.

Delivering updates through this important channel takes us one significant step forward in our pursuit of enabling enterprises to easily stay secure.  We welcome your feedback here.

Arm64

We have made significant progress bringing additional components and workloads to the native Arm64 Visual Studio experience. This includes the highly anticipated native performance improvements for the Windows SDK (includes Win UI 2 and UWP) as well as support for Win App SDK (Win UI 3)!

Preview 2 also includes support for the following workloads:

  • Visual Studio extension development
  • Game development with C++
  • js development

Please continue to vote here on the workloads, components, and experiences that are most valuable to you!

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.

Multi-Repo Network Operations

You can now Fetch, Pull, Push, and Sync more easily in your multi-repository scenarios with an improved UI. Filter to a single repo in the network operations dialog to get more control over the operation.

screenshot of Push dialog with multiple repos

GitHub Issues and ADO Work Item Integration

Enhanced GitHub and ADO integration allows you to query and reference GitHub Issues and ADO Work Items from your commits within Visual Studio! Type a # to see suggested items.

Screenshot of git changes dialog with issue number selection

Git branch switching performance enhancements

We have made improvements to:

  • Utilized targeted in place solution updates and thus avoids solution reload for many scenarios.
  • Improved Solution/Project reload time by reducing many blocking operations.

Learn more by viewing the following blog: VS2022 Performance Enhancements: Git Branch Switching.

Animation of before and after performance improvements of git branch switching in Visual Studio

Microsoft Teams Toolkit

Teams Toolkit for Visual Studio makes it simpler to create, run, and debug apps for Microsoft Teams using .NET. Using Teams Toolkit, you can create new apps using the Microsoft Teams App project template. Next, you can manage your Microsoft 365 account and automatically register and configure your app so that it’s ready to debug right from Visual Studio.

If you want to host your app projects in Azure, Teams Toolkit for Visual Studio includes features that provision and deploy using an infrastructure-as-code approach with Bicep.

Dialog for creating a new Teams application

Ecosystem

VisualStudio.Extensibility is a new extensibility model that lets you create more reliable, easier-to-write extensions.

Phase 2 of this new model is here, now letting you write richer, non-language-based productivity extensions. VisualStudio.Extensibility also introduces new APIs where you can add custom tool windows, user notifications, and additional command types to your extensions!

To learn more and to start writing your VisualStudio.Extensibility extensions, check out this blog post and go to our VSExtensibility GitHub repo!

VisualStudio.Extensibility Tool Window Example

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.

We are continuing to improve the performance, reliability, and accessibility of the All-In-One Search experience (Ctrl+Q for feature search, Ctrl+T for code search). In addition to files and images, previews now work for C++ types and members.

All-in-one Search

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

Audio Cues for Line addition/deletion

Recently, we made the first round of audio cues available for Visual Studio. These included breakpoints, warnings and errors. The feedback has been positive, and in this preview, we’ve added two new sounds. When comparing two versions of a file, you’ll hear two new audio cues when the caret arrives on a line that has been added or deleted.

We chose these two audio cues based on customer feedback, so if you’ve got more audio cues that you want to hear, let us know. We’ve created a developer community ticket as a great place to start.

Markdown support

Visual Studio now has an early preview for editing and previewing markdown files. To enable markdown support, go to Tools > Manage Preview Features and check the “Markdown language service” option.

Visual Studio showing a markdown file being edited. The editor is divided in half with the raw markdown code on the left and the processed HTML being displayed on the right.

If you’ve enabled the Markdown language service option but don’t see the markdown editor, right click any .md file in the solution explorer and select “Open With…”. In the Open With dialog, select “Visual Studio Markdown Editor” and hit OK. The Set as Default button in the Open With dialog can also be used to ensure that all .md files will use the Visual Studio Markdown Editor in the future.

To enable the preview of the HTML, click the small Preview button at the bottom right corner of the document. We’ve got more improvements that we want to do, but we want to make this available for users today.

The bottom right corner of the Visual Studio editor when editing a markdown document. The Preview button is marked with a yellow rectangle.

If you have feedback that you’d like to share, please head to this developer community ticket and join the conversation.

DataTable Visualizer

We are continuing to improve our debugger visualizer experiment by extending all the advanced features of  IEnumerable visualizer such as filtering, sorting, theming, and exporting to the DataTable visualizer.

The DataTable Visualizer will now also allow you to filter data based on the desired filter string. It will return all the rows that contain a value that matches the filter string.

To export the data export in CSV/Excel format using the dropdown on the top right corner. You can also export the filtered and sorted results in CSV/Excel format. Finally, the visualizer window will be themed as per your selected Visual Studio theme.

Animation showing data table visualizer in Visual Studio

Exception Stack frames in Call Stack Window

The new Exception stack frames inside the Call Stack window will provide all functionalities of the actual call stack.

It will provide features like automatic navigation, quickly switching back and forth between frames, and symbol load / decompile options to get back to the source code where the exception was thrown.

Exception stack view in Visual Studio

Unit Testing Performance

Major performance improvements in test discovery and test run workflows.

Parallel Test discovery

In solutions with multiple test projects, the Test Explorer now discovers tests present in different test projects in parallel. This means tests are discovered and displayed in the Test Explorer much faster! In our tests, we’ve seen test discovery complete **twice as fast** on a large solution with greater than 150 projects and close to 300K tests (*on a machine with 10 CPU cores).

Efficient parallelization of test runs

Test assemblies are now optimally parallelized across Target Frameworks and Architectures resulting in test runs that are **three times faster** on a large solution with greater than 150 projects.

Optimized communication between VS and test runner processes

The test runner process connections are now established sooner. This means saving around **1 second** on average per test assembly included in the test run. This leads to significant speed up for test runs involving a small number of tests. The communication between test runners and VS has also been tuned to be less chatty and more efficient. This leads to noticeable improvement especially for test discovery (**up to 30% speed gain** in many cases).

Clear Test Results and Filters in Test Explorer

The Test Explorer now has a way to clear results for a test or list of tests. Whether you are switching branches or bringing focus to a set of test results that matter or want to declutter old test results, you can start from a clean slate. You can clear test results on a test or a list of tests in the Test Explorer. You can also clear test results from the top-level Test menu if all results need to be cleared.

Sequence of images showing context menus for Test Explorer in Visual Studio

You now have a clear indication that the Test Explorer is filtered and clear all test filters applied with a single-click. This clears filters on test results state (or) filters on columns in the test list (or) filters in the search box (if they are applied).

Test Explorer menu highlighting options that show results are filtered

.NET

.NET 7.0 RC and MAUI

Visual Studio will now install .NET 7.0 RC1 as the default SDK and runtime. This release includes support for .NET 7.0 RC1 MAUI, Android, iOS and related workloads.

Inline Rename

There is a new Inline Rename UI that allows you to easily rename a type. Press Ctrl+R,R to bring up the new Inline Rename experience. Notice that the new UI will now show up under the type with an option to rename comments, strings, and symbol files.

Inline rename feature being used in Visual Studio

There is now an option to disable Source Link and Embedded source. You can disable this in Tools > Options > Text Editor > C# > Advanced and deselect Enable navigation to Source Link and Embedded sources.

Animation showing tools options menu for disabling source link in Visual Studio

C++

Dev Containers for C++ CMake projects

Visual Studio Code has had support for Dev Containers for some time now. Beginning in Visual Studio 2022 17.4 you can now use Dev Containers for your C++ projects as well. You can learn more about this feature in our Dev Containers for C++ blog post.

Image image027

vcpkg environment activation

We have added support to Visual Studio for vcpkg artifacts with CMake projects. For projects that include a vcpkg manifest the environment will be activated automatically on project open. You can learn more about this in the vcpkg environment activation in Visual Studio blog post.

Background notification that vcpkg environment has been activated

IntelliSense improvements

Made IntelliSense respect the order of preincluded headers when one is a PCH. Previously, when a PCH was used via /Yu and force-included via /FI, IntelliSense would always process it first, before any other headers included via /FI. This did not match the build behavior, so with this change /FI headers are processed in the order they are specified.

C++ Standardization

We added vectorized implementations of ranges::min_element(), ranges::max_element(), and ranges::minmax_element().

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

  • P2302ranges::contains, ranges::contains_subrange
  • P2499string_view Range Constructor Should Be explicit

CMake improvements

We have updated the version of CMake shipped with Visual Studio to version 3.24.1. See the CMake release notes for what is available.

We have removed internal prefixes from CTest names in Test Explorer.

Android SDK update

Ant scripts have been removed, so users will no longer see Ant-based templates in the New Project dialog. For help migrating from Ant templates to Gradle templates, please see: Migrating Builds From Apache Ant (gradle.org )

We have also updated the NDK component to the LTS version 23 and added support for building with NDK 23 and 24.

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.

20 comments

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

  • Weston Weems III 0

    I really really really really wish someone would have told me selecting preview channel, and getting this upgrade, meant that I was going to have to uninstall to get back to a non preview version of visual studio 2022. Definitely would never have done it.

    trying to change the channel presents the dropdown, and the only thing in it is preview.

    Couldn’t preview channel stuff just be a side by side install, instead of basically forcing me to reinstall visual studio 2022?

    • Marc GoodnerMicrosoft employee 2

      You can have the Preview and Release channels of Visual Studio installed side by side. Grab the release download here.

  • Eli Black 0

    Very cool! 🙂

    Why are there new features mentioned in this blog post that aren’t mentioned in the release notes, though? 😛

  • Paulo Pinto 2

    Lots of nice improvments, however given the WinUI advocacy, it is a pity that we keep missing Visual Studio tooling for editing IDL files (IntelliSense and syntax highlighting) and XAML C++ without having to manually merge generated code.

    Sometimes I wonder if Microsoft employes on WinDev have a special version of Visual Studio for working with COM, given how they push it upon us for the last 30 years, while the Visual Studio development experience for the rest of us keeps at the same level as using Notepad (There were .NET Native and C++/CX, but they don’t matter any longer I guess).

    During the last decade there has been enough feedback on Developer Community, but apparently it isn’t a pritority, coloured tabs are more fun to implement.

    • Mads KristensenMicrosoft employee 0

      Check out the WinRT Tools for C++ for improved tooling around IDL and generated code

      • Paulo Pinto 1

        Thanks, it looks quite nice, and I will have a go at it.

        However, I should note yet again the decision to deprecate C++/CX, replace it with C++/WinRT without any consideration for Microsoft customers, and apparently we need to rely on a Visual Studio extension developed as hobby by a Microsoft employee on his free time, because Visual Studio team cannot bother to provide proper IDL tooling for COM during the last 30 years, despite WinDev pushing it everywhere.

  • pending task 2

    The “New Inline Rename UI” works bad on my machine. I can edit type’s name but neither of [“include comments”, “include strings”, “rename symbol’s file”] check boxes could be selected. I cannot click or use ‘Tab’ to choose any checkbox. Maybe i just misused or misunderstood it.

  • Timothy Trahan 0

    I am using 2022 Preview to do maui work. Upon upgrading to preview 2 from preview 1, when I build a project with additional projects other than the main one, the build engine throws errors expecting the output dll’s to be in a path they are not.

    Even starting a new maui project from scratch, then simply adding an empty project and referencing it, the solution will no longer build.

    Anybody else have this issue?

    • Mike Ruland 0

      Same Issue for me – I ended up downgrading for now. Basically it was looking for DLLs in referenced project’s – bin\Net6.0\android-x64

  • JinShil 0

    It would be really nice if we could debug .NET apps on ARM Embedded Linux devices over SSH with a single motion. Currently we have to manually deploy, manually launch, and manually attach the debugger in Visual Studio 2022.

    With Visual Studio Code, debugging in a single motion can be set up to work by editing a few configuration files, so Visual Studio Code provides a better development experience for this use case than Visual Studio 2022. Why isn’t this possible in Visual Studio 2022?

  • Tony Henrique 0

    The git integration in Visual Studio is very cool!
    I like to use git without having to use it via command line.

  • Damian 0

    Unit test improvements 👍 but im really excited about the little item, MarkDown support!! Big shout out to the 3rd-party addins who held the torch all these years. Thank you VS team! Much love & respect since VS v5.0

  • Aleksei Starkov 0

    v17.4 still has no MAUI workload on Windows. Bring the MAUI back!

    • Manfred Kuhn 0

      In v17.4 Preview 2.0 MAUI workload is available!
      “.NET Multi-Platform App UI-Development”

  • Andres Perez 0

    I am seeing these 5 errors after updating my windows machine from 17.4 Preview 1.

    Severity Code Description Project File Line Suppression State
    Error XA5207 Could not find android.jar for API level 31. This means the Android SDK platform for API level 31 is not installed. Either install it in the Android SDK Manager (Tools > Android > Android SDK Manager…), or change the Xamarin.Android project to target an API version that is installed. (C:\Program Files (x86)\Android\android-sdk\platforms\android-31\android.jar missing.) AzureNotificationHub C:\Program Files\dotnet\packs\Microsoft.Android.Sdk.Windows\32.0.465\tools\Xamarin.Android.Common.targets 533

    Severity Code Description Project File Line Suppression State
    Error NETSDK1127 The targeting pack Microsoft.Android is not installed. Please restore and try again. AzureNotificationHub C:\Program Files\dotnet\sdk\7.0.100-rc.1.22431.12\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.Sdk.FrameworkReferenceResolution.targets 376

    Severity Code Description Project File Line Suppression State
    Error NETSDK1127 The targeting pack Microsoft.Maui.Core is not installed. Please restore and try again. AzureNotificationHub C:\Program Files\dotnet\sdk\7.0.100-rc.1.22431.12\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.Sdk.FrameworkReferenceResolution.targets 376

    Severity Code Description Project File Line Suppression State
    Error NETSDK1127 The targeting pack Microsoft.Maui.Controls is not installed. Please restore and try again. AzureNotificationHub C:\Program Files\dotnet\sdk\7.0.100-rc.1.22431.12\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.Sdk.FrameworkReferenceResolution.targets 376

    Severity Code Description Project File Line Suppression State
    Error NETSDK1127 The targeting pack Microsoft.Maui.Essentials is not installed. Please restore and try again. AzureNotificationHub C:\Program Files\dotnet\sdk\7.0.100-rc.1.22431.12\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.Sdk.FrameworkReferenceResolution.targets 376

    ***UPDATE*** – 9/23/2022 10:26AM EST.
    I was able to roll it back to 17.4 Preview 1 🙌
    ========== Rebuild All: 1 succeeded, 0 failed, 0 skipped ==========

    Not sure if this was something I missed on my end on my end or due to it going from .NET6.0 to .NET 7.0.
    *Any details are greatly appreciated. Thanks!

    • Bryan Cass 1

      Yes, I had the same issue just now. I rolled back to Preview 1 as well.

      • Andy Reed 0

        Same problem here

  • shen-juntao 0

    The code snippets provided by the new VS17.4 prev3 and later versions really bad experience.
    Such as prop, class, interface, struct, cw, if.
    For example: prop old : “public $type$ $propname$ {get; set; } $end$”.
    where “type” and “propname” can be entered in a loop, and the carriage return drop point will be in the “end” position.

    the new one is “public $type$ $propname$ {$end$ get; set; }”.
    the final landing point is strange, and it is impossible to return to the “type” position again.

    Prev 4 still has this problem, is there any reason?or how to close them?

    and folder(C:\Program Files\Microsoft Visual Studio\2022\Preview\VC#\Snippets\2052\Visual C#) code snippet unshow in dropdown menu.

    The above is from the translation tool(bing).

  • Thierry Pélissier 0

    Bonjour,
    J’ai des problèmes lors de la génération, sur tout mes programmes :

    Gravité Code Description Projet Fichier Ligne État de la suppression
    Erreur à Microsoft.CodeAnalysis.VisualBasic.CommandLine.Program.MainCore(String[] args) Zonenet Films
    Erreur Exception non gérée : System.BadImageFormatException: Impossible de charger le fichier ou l’assembly ‘Microsoft.CodeAnalysis, Version=4.4.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35’ ou une de ses dépendances. Le module était censé contenir un manifeste de l’assembly. Zonenet Films
    Erreur à Microsoft.CodeAnalysis.VisualBasic.CommandLine.Program.Main(String[] args) Zonenet Films

    1>C:\Program Files\Microsoft Visual Studio\2022\Professional\MSBuild\Current\Bin\Roslyn\Microsoft.VisualBasic.Core.targets(42,5): error :
    1>C:\Program Files\Microsoft Visual Studio\2022\Professional\MSBuild\Current\Bin\Roslyn\Microsoft.VisualBasic.Core.targets(42,5): error : Exception non gérée : System.BadImageFormatException: Impossible de charger le fichier ou l’assembly ‘Microsoft.CodeAnalysis, Version=4.4.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35’ ou une de ses dépendances. Le module était censé contenir un manifeste de l’assembly.
    1>C:\Program Files\Microsoft Visual Studio\2022\Professional\MSBuild\Current\Bin\Roslyn\Microsoft.VisualBasic.Core.targets(42,5): error : à Microsoft.CodeAnalysis.VisualBasic.CommandLine.Program.MainCore(String[] args)
    1>C:\Program Files\Microsoft Visual Studio\2022\Professional\MSBuild\Current\Bin\Roslyn\Microsoft.VisualBasic.Core.targets(42,5): error : à Microsoft.CodeAnalysis.VisualBasic.CommandLine.Program.Main(String[] args)
    ========== Build : 0 réussite(s), 1 échec(s), 0 à jour, 0 ignorée(s) ==========

    C’est quoi ?

Feedback usabilla icon