Visual Studio is a fully featured IDE to code, debug, test, and deploy to any platform. Develop with the entire toolset from initial design to final deployment. Code faster. Work smarter. Create the future with the best-in-class IDE.
What is Visual Studio used for?
Visual Studio is a source code editor you can use to build apps, games, or extensions using the language of your choice. Edit, debug, and build code. Once you’re done the final product can then be published as an app, website, web service or mobile app.
What is the difference between Visual Studio Code and Visual Studio?
Visual Studio Code is a streamlined code editor with support for development operations like debugging, task running, and version control. It aims to provide just the tools a developer needs for a quick code-build-debug cycle and leaves more complex workflows to fuller featured IDEs, such as Visual Studio.
Is Visual Studio good for Python programming?
Scale to work on projects of any size and complexity with a 64-bit IDE. Code with a new Razor editor that can refactor across files. Diagnose issues with visualizations for async operations and automatic analyzers.
Develop cross-platform mobile and desktop apps with .NET MAUI. Build responsive Web UIs in C# with Blazor. Build, debug, and test .NET and C++ apps in Linux environments. Use hot reload capabilities across .NET and C++ apps. Edit running ASP.NET pages in the web designer view.
AI-powered code completions. Work together in real-time with shared coding sessions. Clone repos, navigate work items, and stage individual lines for commits. Automatically set up CI/CD workflows that can deploy to Azure
Scales to any project
Visual Studio 2022 is the best Visual Studio ever. Our first 64-bit IDE makes it easier to work with even bigger projects and more complex workloads. The stuff you do every day—like typing code and switching branches—feels more fluid more responsive. And out-of-memory errors? They’re about to be a distant memory.
Type less, code more
IntelliCode is a powerful set of automatic code completion tools that understand your code context: variable names, functions, and the type of code you’re writing. This makes IntelliCode able to complete up to a whole line at once, helping you code more accurately and confidently.
Deep insights into your code
CodeLens helps you easily find important insights, like what changes have been made, what those changes did, and whether you’ve run unit testing on your method. Essential information—like references, authors, tests, and commit history—is right there to guide you toward the best and most informed decisions about your work.
Share more than screens
Live Share’s real-time collaboration sessions speed up your team’s edit and debugging cycles, no matter the language or platform. Personalized sessions with access controls and custom editor settings make sure everyone stays code-consistent.
Getting you ready to ship
Integrated debugging is a core part of every Visual Studio product. You can step through your code and look at the values stored in variables, set watches on variables to see when values change, examine the execution path of your code, and just about anything else you need to check out under the hood.
Analyze how much code you’re testing and see instant results in a test suite that’s been optimized for efficiency. Know the impact of every change you make with advanced features that test code as you type. With WSL integration, you can test on both Windows and Linux to make sure your app runs everywhere.
Deploying to the cloud gets even easier. We supply all the templates you’ll need for common application types and local emulators. And you can stay right in Visual Studio to provision dependencies, like Azure SQL databases and Azure Storage accounts. You can even diagnose any issues quickly with the remote debugger attached directly to your application.
Integrated version control
Visual Studio 2022 has built-in support for Git version control to clone, create, and open your own repositories. The Git tool window has everything you need for committing and pushing changes to code, managing branches, and resolving merge conflicts. If you have a GitHub account, you can manage those repos directly within Visual Studio.
Squiggles and Quick Actions
Squiggles are wavy underlines that alert you to errors or potential problems in your code as you type. These visual clues help you fix problems immediately, without waiting to discover errors during build or runtime. If you hover over a squiggle, you see more information about the error. A lightbulb might also appear in the left margin showing Quick Actions you can take to fix the error.
With the click of a button, you can format your code and apply any code fixes suggested by your code style settings, .editorconfig conventions, and Roslyn analyzers. Code Cleanup, currently available for C# code only, helps you resolve issues in your code before it goes to code review.
Refactoring includes operations such as intelligent renaming of variables, extracting one or more lines of code into a new method, and changing the order of method parameters.
IntelliSense is a set of features that display information about your code directly in the editor and, in some cases, write small bits of code for you. It’s like having basic documentation inline in the editor, so you don’t have to look up type information elsewhere.
Visual Studio search
Visual Studio menus, options, and properties can seem overwhelming at times. Visual Studio search, or Ctrl+Q, is a great way to rapidly find IDE features and code in one place.
Collaboratively edit and debug with others in real time, regardless of your app type or programming language. You can instantly and securely share your project. You can also share debugging sessions, terminal instances, localhost web apps, voice calls, and more.
The Call Hierarchy window shows the methods that call a selected method. This information can be useful when you’re thinking about changing or removing the method, or when you’re trying to track down a bug.
CodeLens helps you find code references, code changes, linked bugs, work items, code reviews, and unit tests, without leaving the editor.
Go To Definition
The Go To Definition feature takes you directly to the location of a function or type definition.
The Peek Definition window shows a method or type definition without opening a separate file.
Visual Studio 2022 version 17.2 is the second supported long term servicing channel for Visual Studio 2022. Enterprise and Professional customers needing to adopt a long term stable and secure development environment are encouraged to standardize on this version. As explained in more detail in our lifecycle and support policy, version 17.2 will be supported with fixes and security updates for 18 months through January 2024.
- For 17.2, we fixed an issue preventing customers from installing Visual Studio due to a GPO policy setting in the system registry. Visual Studio will now function the same way that WebView2 functions with regard to this installation.
- Visual Studio can now automatically save code documents whenever the application loses focus. This feature can be accessed via Tools > Options > Environment > Document. If the “Autosave” option is checked, Visual Studio will attempt to save all dirty code documents whenever the Visual Studio application loses focus (e.g. when switching to another application in Windows).
- In 17.1 we introduced peripheral register and rtos views for embedded developers. We are continuing to improve the capabilities of those views with usability improvements in 17.2. Users can now click a pin icon next to peripherals, registers, or fields to pin them the top of the Peripheral View.
- Added compiler support for C++23 feature deducing this, available under the /std:c++latest flag.
- Added inline parameter name and type hint support, toggled by pressing Alt+F1 or double-tapping Ctrl. This behavior can be customized under Tools > Options > Text Editors > C/C++ > IntelliSense.
- Added experimental support for C++20 modules in CMake projects. This is currently only available with the Visual Studio (MSBuild) generator.
- Added IntelliSense support for C++23 features deducing this and if consteval.
- In 17.1 we introduced peripheral register and RTOS views for embedded developers. We are continuing to improve the capabilities of those views with usability improvements in 17.2:
- The RTOS tool window is now hidden by default, this prevents showing a tool window with error messages that are not relevant when an RTOS is not being used.
- When a user double clicks on an RTOS object in the tool window it adds a watch for the object.
- When a user selects the stack pointer start/end values in the RTOS tool window it is opened in the memory window.
- Thread awareness has been added for device targets for the call stack window.
- Added implementaion of the remaining C++20 defect reports (a.k.a. backports). All C++20 features are now available under the /std:c++20 switch. For more information about the implemented backports, please see C++20 Defect Reports project on microsoft/STL GitHub repository and this blogpost
- Added various C++23 Library featues, available under the /std:c++latest flag. For details about the new features, please refer to the STL Repo changelog
- Improved performance of the initial C++ indexing by up to 20%, depending on the depth of the include graph.
- Enhanced line staging experience by allowing stage line adornment to work in different diff modes (side by side, inline, left, right view).
- Stage and Undo commands in peek toolbar now operate on the target hunk.
- Added the ability to enable Git commit-graph for better history and Git operations performance.
- Improved interactive staging by adding support for staging individual lines of code right from the editor and the diff view.
- Enhanced the branch checkout experience, a.k.a branch switching by adding in more options and context for when there are un-committed changes.
- Enhanced the detached HEAD experience by providing the option to keep or discard commits when switching to a branch.
- Added an option to include license template when creating a new repository.
- Line-staging support, a.k.a interactive staging with the ability to stage specific lines and/or chunks of code right from the editor and the diff view.
- Azure DevOps connection detection enhancements making it easier to related work items to commits.
- Visual Studio now consumes 64-bit Git for Windows.
- You can now use a faster code coverage window with more flexible columns to organize and save your view. You can enable the code coverage experience improvements in Tools > Options > Environment > Preview Features.
- Remote Testing now supports test runs against remote arm64 windows environments.
- Significant improvements across full functionality of Live Unit Testing are available under a preview feature flag including:
- Supporting more solutions out-of-the-box than before
- Better handling of large solutions
- Better default behavior working with large test sets
- Better cancellation abilities of test runs in progress
- More configuration options with new Live Unit Testing wizard and Lutignore file
- Enable this new Live Unit Testing build experience in Tools > Options > Environment > Preview Features and read our blog post to learn more.
- We are also previewing a more advanced test progress bar that includes more details on where the Test Explorer is in the test execution process with live updates.
- We now surface embedded source and Source Link as part of Go to Implementation if a referenced assembly has embedded source or Source Link. This allows you to navigate to the original source files that implement the target symbol.
- In .NET 7 we added a new attribute called the StringSyntaxAttribute which will allow you to tell us what kind of data a string represents such as JSON, Regex, or DateTime. We added support for this attribute so you will get syntax highlighting for the new StringSyntaxAttribute for JSON.
- We added a diagnostic message for the new JSON StringSyntaxAttribute when there is a misplaced string literal in an object literal to say that a colon is expected.
- We now have a refactoring that wraps a collection of initializers for both Visual Basic and C#.
- We now support embedded languages for the new C# 11 language feature raw string literals. To use raw string literals, set the language version in your project file to preview:
- Background Code Analysis now has more configuration options in Tools > Options allowing you to set the diagnostic scope to None in-order to turn off Background Code Analysis.
- Code Cleanup now supports all code style options.
- We added a new code fix for parameterless constructors inside of structs.
- We added support for StringSyntaxAttribute so you will get syntax highlighting in Visual Studio based on the type of data that the string represents.
- Quick Info will now display signatures of anonymous delegates.
- Double clicking on inline parameter or type hints will now insert parameter or type names.
- We added a new refactoring that removes unnecessary lambda expressions and calls the method group directly.
- In C# 11 we added a new language feature called raw string literals. We now have a refactoring to convert a normal or verbatim string literal to a raw string literal.
- There is a new change in the compiler to not allow parameterless constructors inside of structs. We added a new code fix that will automatically fix this.
- In .NET 7.0 we added a new attribute called the StringSyntaxAttribute which will allow you to tell us what kind of data a string represents such as JSON, Regex, or DateTime. We added support for this so you will get syntax highlighting in Visual Studio based on the type of data that the string represents.
- Double clicking on inline parameter or type hints will now insert parameter or type names.
- We added a new refactoring that removes unnecessary lambda expressions and calls the method group directly. Place your cursor on an unnecessary lambda. Press Ctrl+. to trigger the Quick Actions and Refactorings menu. Select Remove unnecessary lambda expression.
- In C# 11 we are adding a new language feature called raw string literals. We now have a refactoring to convert a normal or verbatim string literal to a raw string literal. To use raw string literals, set the language version in your project file to preview:
preview. Place your cursor on a normal or verbatim string. Press Ctrl+. to trigger the Quick Actions and Refactorings menu. Select Convert to raw string.
Razor (ASP.NET Core) Editor
- The new Razor editor now shows you the colors inline for text document colors.
- The new Razor editor now supports the ability to collapse regions.
- The new Razor editor now supports the “wrap div” shortcut Shift+Alt+W.
- For 17.1, IntelliCode started suggesting quick actions for C# based on a user’s intent in the IntelliSense list. For 17.2, these are now shown as auto-suggested code that appears in the editor upon typing.
- For 17.2, IntelliCode’s suggestions for repeated edits also appear as auto-suggested code when the suggested edit only involves adding code. This applies to both edits that span single lines and multiple lines.
- You can now add Docker Compose container orchestration support to an Azure Functions project and debug it locally.
- We added .NET 7 support.
.NET Debugging with WSL
- Improved troubleshooting for configuration issues including an automated installation of WSL.
SQL Server Data Tools
- Added support for column-level encryption in SQL projects targeting in Azure Synapse Analytics.
- Creation of new Azure Function projects is now fully integrated into the general New Project dialog allowing you to pick and configure Azure Function triggers without the need for an additional dialog. You also get the option to create a dockerfile as part of the project creation. When further configuration through Connected Services is needed, the experience navigates you there and guides you through the rest of the steps.
- You can now connect your application to PostgreSQL (Postgres – Official Image | Docker Hub), MongoDB (Mongo – Official Image | Docker Hub) and SQLite (Data Source=Sqllite.db) through the Connected Services experience
- Warnings coming from scaffolded coded and its non-nullable properties will be hidden by default by adding the property “Nullable” with the value “annotions” in the corresponding .csproj file.
- The Add Dependency dialog in Connected Services now features a search experience.
- Improved proxy support by detecting when users are behind a proxy and proactively prompting for credentials when Visual Studio needs to access online resources
- Microsoft Teams development tools
- The Microsoft Teams App project template has been improved and now creates configuration files consistent with the teamsfx CLI, including the .fx folder.
- We recommend creating a new project using the updated template for any existing Teams Apps you’ve created with previous versions of the Teams Toolkit.
- We’ve removed account selection and automatic registration of Teams resources from the Microsoft Teams App project template.
- You can now choose when to sign-in with your M365 identity and register app resources using the Project > Teams Toolkit > Configure Microsoft Teams App menu option.
- Updates to the manifest.*.template.json files can be synchronized with Teams Developer Portal by selecting this menu item again at any time.
- You can now create and debug Bots for Microsoft Teams.
- Create a new project using the Microsoft Teams App project template and select the Bot capability.
- Use the Project > Teams Toolkit > Configure Microsoft Teams app menu to register the app and Bot.
- You can now create resources for Tabs and Bots in your Azure subscription.
- Use the Project > Teams Toolkit > Provision in the Cloud menu to create resources in a subscription.
- Use the Project > Teams Toolkit > Deploy to the Cloud menu to publish code to those resources.
- You can open remotely hosted resources in a browser that are created from the Provision menu using the Preview Teams app menu.