Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
We're excited to announce the availability of Visual Studio 2022 v17.14. This update focuses on stability and security, along with AI improvements for all developers.
Download Visual Studio 2022 v17.14 Preview to enjoy these new features and improvements.
Features
All the new features in the latest preview release.
GitHub Copilot
GPT-4o code completion model 📣
Introducing the GPT-4o Copilot code completion model in public preview to bring you higher quality completions.
We are thrilled to announce that the new GPT-4o Copilot code completion model is now available in Visual Studio 17.14 for GitHub Copilot users! This advanced model, based on GPT-4o mini, has been further trained on over 275,000 high-quality public repositories across more than 30 popular programming languages. As a result, developers can look forward to more accurate suggestions and enhanced performance.
To experience the new model, navigate to Tools → Options → GitHub → Copilot → Copilot Completions and select GPT-4o Copilot from the model picker dropdown. You can also access the settings by clicking the GitHub Copilot Badge in the top right corner and going to Settings → Options. Please note that there might be a delay in retrieving the latest model list for the first time. If you don't see the new model in the dropdown, try restarting Visual Studio.
GPT-4o Copilot access notes:
- Copilot Pro users: The new model is available for you now in 17.14 and later.
- Copilot Business or Enterprise users: Your administrator needs to enable this model for your organization first by opting in to Editor preview features in the Copilot policy settings on github.com.
- Copilot Free users: Using this model will count toward your 2,000 free monthly completions.
📣 See feature ticket to share your feedback and continue the conversation.
Important
Activate GitHub Copilot Free and unlock this and other AI features. No trial. No credit card. Just your GitHub account.
AI doc comment generation 📣
Automatically generate doc comments for C++ and C# functions.
Copilot is now seamlessly integrated into Visual Studio's code editor to significantly boost your productivity by generating doc comments for your functions.
With automatic doc comment generation enabled for your project, you can simply type the comment pattern according to your settings configuration (e.g.,
///
), and Copilot will instantly complete the function description based on the function's content. This feature saves you valuable time and effort, allowing you to focus more on coding and less on documentation.
This game-changing feature is available for both C++ and C# project files, making your coding experience smoother and more efficient.
📣 See feature ticket to share your feedback and continue the conversation.
Important
Activate GitHub Copilot Free and unlock this and other AI features. No trial. No credit card. Just your GitHub account.
Next Edit Suggestion
Next Edit Suggestions is now available in Visual Studio public preview to support your code editing activities!
We are excited to announce Next Edit Suggestions, or NES for short, is now available in Visual Studio to further improve your coding experience. NES leverages the previous edits made and predicts the next edit to come, whether it's an insertion, deletion, or mix of both. Unlike Cocompletions which is limited to generate suggestions at your caret location, NES can support you anywhere in your file, where the next edit is most likely to occur. NES augments the existing Copilot Completions experience by supporting developers' code editing activities.
Getting Started with NES
Enable NES via Tools → Options → GitHub → Copilot → Copilot Completions → Enable Next Edit Suggestions.
Like completions, all you need to do to get NES is to start coding!
When you're presented with an edit suggestion, if it is on a different line than the one you are on now, it will suggest you Tab to Navigate to the corresponding line first. You won't need to manually search for related edits anymore; NES will lead the way!
After you are on the same line as the edit, you can Tab to Accept the suggestion.
Note: You can turn on/off the hint bars by going to Tools → Options → IntelliCode → Advanced → Hide the tip shown with gray text.
In addition to the hint bars, an arrow in the gutter also pops up to indicate that there is an edit suggestion available. You can click on the arrow to explore the edit suggestion menu.
Example Scenarios
Next edit suggestions can be helpful in a variety of scenarios, not only making obvious repetitive changes but also logical changes. Here are some examples:
Refactoring a 2D Point class to 3D Point:
Updating code syntax to modern C++ using STL:
Note that NES is not just making repetitive changes like updating all
printf()
tostd::cout
, but also updating other syntax such asfgets()
.
Making logical changes in response to a newly added variable:
NES responds quickly to the new variable, which adds a maximum number of guesses a player can make in a game, and Copilot Completions also jumps in to help.
Important
Activate GitHub Copilot Free and unlock this and other AI features. No trial. No credit card. Just your GitHub account.
Adaptive paste
You can now let Copilot adjust your pasted code to fit the context of your existing code.
When you're pasting code into Visual Studio, there are often additional steps required to make it work seamlessly. Parameters may need to be adjusted to match those already used in your solution, or the syntax and styling may not align with the rest of your document.
Adaptive paste is here to save you time and reduce effort by automatically adjusting the pasted code to fit the context of your existing code, minimizing the need for manual modifications. This feature also supports scenarios such as minor error fixes, code styling, formatting, human and code language translation, and fill-in-the-blank or continue-the-pattern tasks.
For instance, if you have a
Math
class that implements theIMath
interface, copying and pasting the implementation for theCeiling
method into the same file will adapt it to implement the not yet implemented interface memberFloor
.
The adaptive paste UI will appear when you perform a regular paste {KeyboardShortcut:Edit.Paste}. Simply press the
TAB
key to request a suggestion, and you'll be shown a diff comparing the original pasted code with the adjusted code.Try it out today by enabling the option Tools → Options → GitHub → Copilot → Editor → Enable Adaptive Paste.
Important
Activate GitHub Copilot Free and unlock this and other AI features. No trial. No credit card. Just your GitHub account.
Implement with Copilot
You can now let Copilot fully implement your empty C# method.
Today, if you're referencing a method in your C# code that hasn't been implemented yet, you can use a common lightbulb refactoring called Generate Method to immediately create that method in a class. However, this refactoring only creates a method with the correct signature but an empty skeleton and
throw new NotImplementedException
line otherwise. This means that while the method technically exists and you have to do less work to create it, you'll still need to implement the method yourself, which can take more time.The Implement with Copilot refactoring aims to make you even more productive in this scenario by allowing you to automatically implement or add the meat to your method with the help of GitHub Copilot. When an empty method only containing a NotImplementedException throw is encountered, you can select the lightbulb (CTRL+.) on that
throw
line and select the Implement with Copilot refactoring and Copilot will fill out all the contents of your method based on your existing codebase, method name, etc.
Important
Activate GitHub Copilot Free and unlock this and other AI features. No trial. No credit card. Just your GitHub account.
Debugging & diagnostics
New debugger for .NET MAUI apps
New Mono debug engine for .NET MAUI integrated into the Visual Studio Core debugger.
The new Mono debugger for .NET MAUI apps is an advanced debug engine integrated into the Visual Studio debugger. It offers significant improvements in reliability, performance, and feature parity with the rest of Visual Studio.
Notable enhancements include Just My Code, variables, and expression evaluation.
To use this feature, ensure you have enabled the following Visual Studio Preview option: Enable new .NET Mono debugger for MAUI apps.
Currently, this feature is only available for the Android platform. iOS support is coming soon.
Show datatips for LINQ Expressions 📣
Enhanced LINQ expression debugging experience with clause hovering datatip.
Generating and troubleshooting LINQ queries can be a tedious and intricate process, often requiring precise syntax knowledge and numerous iterations. To alleviate these challenges, Visual Studio 2022 now features a LINQ on-hover DataTip in its debugger.
While you are in a break state during debugging, you can hover over individual clauses or segments of your LINQ query to evaluate the immediate query value at runtime.
Additionally, you can click the GitHub Copilot icon at the end of the DataTip to perform an Analyze with Copilot on the specific query clause you hovered over. Copilot will then explain the clause's syntax and clarify why you are getting the specified result.
This feature can significantly improve efficiency and make your debugging experience smoother and easier, helping you pinpoint issues with LINQ queries faster and streamline your overall development workflow.
📣 See feature ticket to share your feedback and continue the conversation.
Zero-Length Array Allocation Insights
The .NET Allocation Tool now identifies zero-length array allocations, helping optimize memory usage and performance.
The .NET Allocation Tool now provides detailed insights into zero-length array allocations, helping you identify and optimize unnecessary memory usage. While these allocations may seem insignificant individually, they can accumulate quickly and impact performance, especially in high-performance or memory-constrained applications.
With this update, you can investigate zero-length array allocations by clicking the Investigate link, which opens the Allocation View displaying allocation details. Double-clicking reveals code paths where these allocations occur, enabling precise optimizations. To improve efficiency, consider using
Array.Empty<T>()
, a statically allocated empty array instance, to eliminate redundant memory allocations.
Git tooling
View Outgoing / Incoming Commits 📣
The Git Repository window now provides a filter at its toolbar to show only outgoing / incoming commits.
The Git Repository window is your go-to place to understand your Git history. As you work on a local branch, it may get out of sync with your remote, either because you created new commits (outgoing) or there are new commits to pull (incoming).
With the new outgoing/incoming filter available in the toolbar, you can instantly spot these unsynced commits. Your commits, their commits – scan them with ease and stay perfectly in sync!
📣 See feature ticket to share your feedback and continue the conversation.
Restore the Git repository window 📣
Keep the Git Repository window open between restarts with this new setting.
As your dedicated environment for branch operations, the Git Repository window is likely at the core of your day-to-day development. If you find yourself frequently reopening it with every Visual Studio session, this update is designed to save you time and effort.
We've added a new setting to Git > Settings that automatically restores the Git Repository window when restarting Visual Studio. Additionally, the window will be included in your saved window layouts, enhancing your customization options.
By default, this feature is off to keep things running smoothly for those who don't need it. But if you like the convenience, this setting is perfect for you.
📣 See feature ticket to share your feedback and continue the conversation.
Default branch name 📣
Allow users to customize the initial default branch when a new git repository is created.
You can now set the default branch name for new Git repositories directly through Visual Studio. This new setting integrates smoothly with your Git configuration, making it easier to tailor your workflow to your preferences.
Simply navigate to Git > Settings, and the next time you create a repository, you will see your custom branch name in action.
📣 See feature ticket to share your feedback and continue the conversation.
IDE
Enhanced NuGet Authentication
NuGet now provides context when asking you to provide credentials.
We've improved the NuGet authentication process. If we detect any potential authentication issues, you'll now see a new authentication dialog that provides context about the feed and the specific account needs.
This update enhances the reauthentication process for multi-factor authentication (MFA) scenarios, resolves issues with consecutive authentication prompts, and ensures a smoother overall experience when managing private NuGet feeds.
Teams Toolkit updates
Teams Toolkit added new projects templates for building agents.
Create declarative agent
We're excited to announce that in this release Teams Toolkit added project templates for building Declarative Agents for Microsoft Copilot.
You can create a Declarative Agent with or without an action. You can choose to define new APIs or utilize existing ones to perform tasks or retrieve data.
Use Teams Toolkit to debug and preview your Declarative Agents in Microsoft Copilot.
Enable smooth one-click debug
In previous versions, when users debugged any solution generated using Teams Toolkit, they needed to use the command Prepare Teams app dependency before debugging the project. This command triggered Teams Toolkit to help developers create essential resources for debugging, such as registering or updating the Teams app.
To enhance the debugging experience and make it more intuitive for Visual Studio users, we have removed this step and enabled one-click debugging experience. Now, you can directly click the debug button without any preparation steps. However, if you have made edits to your Teams app between two debug events and need to update your Teams app, there remains an option to do that. We offer two debug profiles:
- Debug with updating Teams app: Select the default profile Microsoft Teams (browser) if you have made edits to your Teams app to ensure the updates are applied.
- Debug without updating Teams app: Choose the second profile Microsoft Teams (browser) (skip update Teams app) to skip updating the Teams app resources, making debugging lighter and quicker.
Upgrade to .NET 9
Additionally, in this release, Teams Toolkit has refreshed all project templates to support .NET 9.
Happy coding!
The Teams Toolkit Team
Preserve font preferences across themes 📣
Changing themes will now preserve your font and font size preferences.
We understand that the fonts developers select when coding is a personal choice, influenced by preferences for readability, accessibility, or aesthetics. Visual Studio themes primarily focus on presentation colors and are independent of your preferred fonts.
With this update, we've introduced functionality to retain your font face and size choices when switching themes. You can now set your font preferences once and switch themes in Visual Studio without needing to reconfigure your font settings every time. Note that the colors of your fonts remain linked to the theme, as that is the purpose of themes, but your font selections will be preserved.
📣 See feature ticket to share your feedback and continue the conversation.
Desktop
Update your UI, live at design time 📣
Live Preview, Hot Reload, and other UI tools are now available at design time.
Live Preview is now available at design time, allowing you to see changes in your app UI in real-time. You can also use Hot Reload and other live UI tools in this way, ensuring a seamless workflow.
These tools can be used even when detached from the debugger, allowing for uninterrupted experimentation and refinement of your designs.
Click on the new Live Preview indicator to access Live Preview at design time from any XAML file:
Whether you're working on a new .NET MAUI app or refining an existing WPF app, these enhancements will help you deliver high-quality applications faster and with greater confidence.
📣 See feature ticket to share your feedback and continue the conversation.
New UWP .NET 9 MSTest project template 📣
Visual Studio now includes an updated UWP MSTest project template targeting .NET 9 and Native AOT.
Visual Studio now includes a new UWP MSTest project template targeting .NET 9 and Native AOT. We worked closely with the MSTest team to add all necessary support for UWP .NET 9 projects to the MSTest libraries, infrastructure, and the Visual Studio test host. This enables UWP test projects to target .NET 9 and leverage all the modern .NET SDK and MSTest tooling while still running in a UWP context as you'd expect.
The previous UWP MSTest project template using .NET Native will still be available. However, we recommend using the new project templates targeting .NET 9 and Native AOT going forward. As in Visual Studio 17.13, we have adjusted the ordering of all UWP templates to prioritize the new .NET 9 project templates in the search results.
📣 See feature ticket to share your feedback and continue the conversation.
Extensibility
Install extension packs
The installer can now handle the installation of extension packs.
The installer now supports Extension Packs, which are bundles of multiple extensions referenced from a single extension.
To use Extension Packs in the Installer, first specify the desired extensions in a .vsconfig file. Then, use the Visual Studio Installer's Import Configuration feature to import the .vsconfig file containing your extension details.
For more information on creating or generating .vsconfig files, refer to the installation configurations documentation.
After importing the .vsconfig file, you'll be directed to the modify screen where extensions will be grouped under their own heading in the installation summary pane. Here, you can select or deselect entire Extension Packs or individual extensions within any Packs.
![]()
Faster VSIX build times
VSIX projects with one or more project references now use intelligent incremental builds, drastically improving F5 scenarios and developer productivity.
If you're developing Visual Studio extensions with multiple projects, you'll love this performance enhancement! VSIX projects with one or more project references will now only build projects that actually need rebuilding, making your development workflow significantly faster.
How it works
The Fast Up-to-Date Check system has been improved to be smarter about determining which projects in your solution need rebuilding:
- If you modify Project A which depends on Projects B and C, only Project A will be rebuilt
- If you modify Project B, only Projects A and B will be rebuilt
- This intelligence extends throughout your entire project dependency tree
Real-world impact
The performance improvements are substantial in real-world scenarios. For example, the GitHub Copilot extension that ships with Visual Studio (with approximately 30 projects) saw build time improvements of over 50% for incremental changes - reducing build times from around 60 seconds to just 24 seconds!
This enhancement is particularly beneficial for:
- Large VSIX projects with multiple dependencies
- Rapid iteration development workflows
- Frequent F5 debugging sessions
Note that if your solution contains only a single project, you won't see any performance benefits from this enhancement.
Your extension development just got a whole lot faster - happy coding!
Extension Manager updates 📣
There are several new improvements to the Extension Manager in Visual Studio that will make it easier to manage your extensions.
We're excited to introduce a set of powerful new features in Visual Studio that streamline your workflow and improve the extension management experience. These updates ensure that you stay up to date effortlessly while giving you more control over how and when updates are applied.
What's New?
Seamless auto updates
Visual Studio will now automatically trigger updates when you open the application, ensuring you always have the latest features and fixes without manual intervention.
Restart gold bar for applied updates
When updates are applied, a gold bar notification will appear, prompting you to restart Visual Studio for the changes to take effect.
Auto update settings in extension page
We've made auto update settings more accessible by integrating them directly into the extension page, giving you quick access to configuration options.
Filter by pending changes
A new Pending category now highlights pending changes, keeping you informed about updates and modifications that require attention.
Auto update settings
In addition to the extension page, auto update settings are now available under Tools → Options, allowing for a more intuitive settings management experience.
Simplified settings experience
We've streamlined the settings UI, making it easier to configure auto updates and other related preferences with fewer clicks and clearer options.
Excluded extensions list
Visual Studio now features an *Excluded extensions list that auto-populates, helping you manage extensions that should not be updated automatically. This is particularly useful for mission-critical extensions where you prefer to control version updates manually.
These enhancements are designed to improve usability, reduce update friction, and give you greater control over your development environment while ensuring you benefit from the latest improvements.
📣 See feature ticket to share your feedback and continue the conversation.
Data
Use SDK-style SQL projects in SSDT 📣
You can now use the SDK-style project file format in your SQL Server Data Tools projects with enhanced SQL debugging and schema comparison capabilities.
The update in Visual Studio 17.14 introduces new item templates and .dacpac database references to SDK-style SQL Server Data Tools (preview). SDK-style SSDT SQL projects are based on the Microsoft.Build.Sql SDK, which provides cross-platform support and improved CI/CD capabilities for SQL Server Data Tools (SSDT) projects.
With less verbose project files and database references to NuGet packages, teams can collaborate more efficiently on large databases within a single project or compile multiple sets of objects from several projects. Database deployments from a Microsoft.Build.Sql project can be automated in both Windows and Linux environments using the Microsoft.SqlPackage dotnet tool to publish the build artifact (.dacpac) from the SQL project. Learn more about SDK-style SQL projects and DevOps for SQL.
In 17.14, database references have been expanded to support project and .dacpac artifact references. Support for database references as package references will be available in a future release. A recent update to the slngen solution file generator also added support for Microsoft.Build.Sql projects, enabling the management of large solutions programmatically.
To use SDK-style SQL projects in your solution, make sure to install the latest SSDT preview component in the Visual Studio installer.
📣 See feature ticket to share your feedback and continue the conversation.
C++
Hover tooltips for CMake modules
Added support for CMake modules in IntelliSense Quick Info and completions.
We are thrilled to announce that we have added support for IntelliSense-based completions and quick info for CMake modules in Visual Studio. Now, you can view all available CMake modules and learn more about them directly from the Visual Studio editor, making your development process smoother and more efficient.
Quick Info
When you hover over a referenced CMake module, IntelliSense provides detailed information about the selected module, helping you understand its usage and functionality at a glance.
Completion
When you start typing a CMake module in your
CMakeLists.txt
or other CMake script files, IntelliSense will provide a list of available modules to choose from.
![]()
C++ Dynamic Debugging
Full debuggability for your optimized C++ code without compromising on performance.
Debugging optimized code is now easier than ever. By activating C++ Dynamic Debugging, you can debug your optimized code as if it were unoptimized. You can view all your local variables, step in anywhere, and set full-fidelity breakpoints on your optimized binaries. For more details, please read our blog post.
![]()
Populate template IntelliSense
Template IntelliSense now automatically populates template arguments by using Go to Definition (F12).
You can now automatically populate template arguments in the template bar, which displays and allows editing of template parameters, when using Go to Definition or F12.
For example, pressing F12 on
vector
will now jump tovector
with the template bar automatically populated, allowing developers to quickly inspect and modify template parameters.In the example below, using Go To Definition or pressing F12 will populate both the type and allocator in the template bar.
![]()
Configurable Include Completion 📣
Configuring include completion allows you to control which headers appear in the include completion list.
You can now control which headers appear in the include completion list when you type
#include
.The dropdown setting in Tools → Options → Text Editor → C/C++ → IntelliSense → Include style for suggestions now affects both include suggestions and include completion, with the following refined behaviors:
- Core Guidelines (Default): Uses quotes for relative paths and angle brackets for everything else.
- Quotes mode: Uses quotes for all headers except standard headers, which use angle brackets.
- Angle brackets mode: Uses angle brackets for all headers that are part of the include path.
Previously, all headers (except relative ones) appeared in suggestions regardless of the syntax used. With this update, you can refine how header suggestions appear when using
#include <> and #include ""
.📣 See feature ticket to share your feedback and continue the conversation.
Standard Library Hardening📣
- Implemented a partial C++26 feature, P3471R4 Standard Library Hardening
- Currently disabled by default.
- This can be enabled (for any Standard mode) by defining
_MSVC_STL_HARDENING
to1
project-wide.- As C++26 Contracts are not yet implemented, this defaults to calling
__fastfail()
for hardened precondition violations.- See GitHub #5274
- We also implemented "destructor tombstones" to mitigate use-after-free mistakes.
- Currently disabled by default.
- This can be enabled by defining
_MSVC_STL_DESTRUCTOR_TOMBSTONES
to1
project-wide.- See GitHub #5318
Windows Forms
Toolbox support for Explicit Assembly References.📣
Discover your favorite Windows Forms (WinForms) controls present in the Explicit Assembly References automatically added to the Toolbox for .NET Framework projects using the WinForms out-of-process designer.
WinForms out-of-process Designer for .NET Framework projects will now automatically discover and display controls present in standalone assembly references, also called as Explicit Assembly References. This feature will greatly enhance the design time experience for .NET Framework projects referencing legacy 32-bit assemblies. For more details, please read our blog post.
Top user-reported bug fixes
- Error with String::Format in C++ CLR Class Library (.NET) project
- False positive lifetime code analysis warning C26847: Don't return an invalid pointer
- Regression in 17.12.0: Substitution Failure Is An Error C3699 when compiling with /CLR
- Sanitizer Coverage Produces Bad Codegen
- Compilation error in lambda expressions in hierarchies with virtual inheritance
- Installer fails update to 17.12.0 with powershell script execution error
- Solution explorer exception when changing solution
📣 See the full list of all the user-reported bug fixes that made it into this release.
Important
A breaking change has been made to Domain-Specific Language model serialization. Developers using the default serialization mechanism for their models that contain custom property types will need to add TypeConverters for those custom property types. For an example of how to do this, see Customizing File Storage and XML Serialization.
From our entire team, thank you for choosing Visual Studio! For the latest updates, resources, and news, check out the Visual Studio Hub and stay in touch.
Happy coding!
The Visual Studio team
Note
This update may include new Microsoft or third-party software that is licensed separately, as set out in the 3rd Party Notices or in its accompanying license.