Microsoft's do-it-all IDE Visual Studio 2022 came out late last year. How good is it really?
Top request from devs? A Linux version
Review Visual Studio goes back a long way. Microsoft always had its own programming languages and tools, beginning with Microsoft Basic in 1975 and Microsoft C 1.0 in 1983.
The Visual Studio idea came from two main sources. In the early days, Windows applications were coded and compiled using MS-DOS, and there was a MS-DOS IDE called Programmer's Workbench (PWB, first released 1989). The company also came up Visual Basic (VB, first released 1991), which unlike Microsoft C++ had a Windows IDE. Perhaps inspired by VB, Microsoft delivered Visual C++ 1.0 in 1993, replacing the little-used PWB. Visual Studio itself was introduced in 1997, though it was more of a bundle of different Windows development tools initially. The first Visual Studio to integrate C++ and Visual Basic (in .NET guise) development into the same IDE was Visual Studio .NET in 2002, 20 years ago, and this perhaps is the true ancestor of today's IDE.
A big change in VS 2022, released November, is that it is the first version where the IDE itself runs as a 64-bit process. The advantage is that it has access to more than 4GB memory in the devenv process, this being the shell of the IDE, though of course it is still possible to compile 32-bit applications. The main benefit is for large solutions comprising hundreds of projects. Although a substantial change, it is transparent to developers and from what we can tell, has been a beneficial change.
As you would expect, Visual Studio is modular and the core IDE on its own does little. Microsoft greatly improved the installation and maintenance of the product with Visual Studio 2017 (released in 2016) which featured the VS Installer, a separate application which manages the installation and update of all releases. At one time, Microsoft's advice for those trying VS previews was to wipe and reinstall Windows afterwards; that no longer applies and different versions, both preview and release, now live happily side by side. It is just as well, since developers often need to retain old versions for compatibility with existing code.
Visual Studio is extensible and supports a marketplace of add-ons. The most downloaded at the time of writing is JetBrains ReSharper, for refactoring and navigating .NET code.
What you can do with Visual Studio
Since it is modular, a developer's experience of Visual Studio varies according to what is installed. The installer groups the options into 16 workload categories, such as ASP.NET and web development, Python, Azure, Xamarin (cross-platform mobile), .NET desktop, C++ desktop, and so on. The detailed list of components is longer, with nearly 300 items.
Although it is presented as a kind-of "target anything" IDE, the primary role of Visual Studio is for Windows and .NET applications. ASP.NET applications may end up running on Linux, and there is support for mobile applications via Xamarin (based on Mono, the original cross-platform .NET) or C++. Visual Studio can also be used for Node.js development though VS Code is a more natural fit for this kind of project.
Microsoft, as you would expect, has built strong ties to Azure into Visual Studio. This takes the form of local emulators for Azure services like Functions and Storage, deployment wizards that can provision Azure resources, and snapshot debugging, which is debugging an Azure application by grabbing a snapshot from an Azure App Service and examining the state of the application in Visual Studio. There is also integration with SQL Server, including Azure SQL, via a Server Explorer tool.
One thing Visual Studio does not cover is Java. Considering the wide use of Java in enterprise applications that may seem a big omission, but there is history behind it, since Microsoft saw Java as a threat in its early years, and Microsoft's Java lookalike Visual J++ was dropped after a lawsuit from Sun. VS Code on the other hand does support Java coding.
Lack of Java support, along with Apple's requirement that building an iOS application requires a Mac, means that Visual Studio is not ideal for mobile applications, despite Xamarin support. MAUI (Multi-platform App UI) is an update to Xamarin that is in preview, and targets macOS as well as Windows and mobile, though a Mac is required to build applications for Apple platforms.
Visual Studio Live Share is a feature for real-time collaborative development and enables simultaneous code editing and debugging, including audio chat.
Visual Studio Editions
Visual Studio has always had Professional and Enterprise editions, and since Visual Studio 2005 free editions as well, these latter originally being free Express versions specific to a language, but now wrapped up as a Community edition. The balance between what is available free and what is not has shifted, with more now being offered for nothing. It pays Microsoft to encourage developers to support its platform, so there is a trade-off between giving away the tools and trying to make them viable products in their own right. That said, the free Community edition is only licensed for commercial use for individuals or "non-enterprise" organisations, defined as those with more than 250 PCs or over $1m in revenue.
Technically, even the Community edition is quite capable. The main difference between Community and Professional is the licensing. The Enterprise edition on the other hand has additional features, including code coverage (see which code is covered by unit tests), IntelliTrace debugging (allows step-back through code), and architecture layer diagrams. Of these, it is code coverage that is most sought after and a request to add it to the Professional edition has plenty of support, but Microsoft is unyielding. Architecture modelling in Visual Studio is something Microsoft has put much effort into over the years, but with relatively low reward. Model-driven development and UML (Universal Modeling Language) diagrams have fallen out of favour as teams discovered that trying to tie models and code tightly together is one of those things that sounds good in theory but is unwieldy in practice.
- Microsoft previews Visual Studio 2022 for Mac, but why bother when VS Code runs just fine on Apple hardware?
- Microsoft under fire again from open-source .NET devs: Hot Reload feature pulled for sake of Visual Studio sales
- Developers offered browser-based fun in VSCode.dev and Java action in Visual Studio Code
- Microsoft .NET updates include C and C++ code in Blazor WebAssembly, release date for Visual Studio 2022
The difficulty is that going from Professional to Enterprise is a big leap in cost. A Pro subscription currently costs $1,199 for the first year and £799 subsequently, while Enterprise is $5,999 followed by $2,569. The comparison is complicated since Enterprise comes with a bundle of extras such as Azure credits and technical support incidents. Visual Studio also comes bundled with other subscriptions such as Microsoft Partner Network.
Visual Studio 2022 for the Mac is in preview. This is useful for Xamarin and MAUI development targeting iOS and macOS, and for ASP.NET as an alternative to VS Code, though it also supports a subset of Visual Studio features and shares some code. There is only one edition to install, but Professional and Enterprise features are unlocked when a licence is applied.
Visual Studio annoyances
The Windows version of Visual Studio is in one sense a mature product and the team at Microsoft is relatively responsive to feedback – according to the feedback site, Visual Studio 2022 closed 1,177 requests – and the IDE is the second most popular after Visual Studio Code, according to the StackOverflow survey, all indicating a relatively high level of satisfaction among developers.
It still has annoyances, though, one of which is that the product is in constant flux. Features appear and disappear, or are delayed in new versions, like SQL Server Reporting Services and SQL Server Integration Services, which are not in the initial release of Visual Studio 2022. "I am not using VS 2022 due to the lack of this support," complains a user. Developers hang on to old versions in order to keep using features required for maintaining existing applications, or to avoid subtle changes in behaviour.
The product has some odd corners, and developers who open the same project in both Visual Studio and Visual Studio Code may notice some quirks. One annoyance, for example, is that some macros used in build events – code that executes before or after building a project – only work in Visual Studio. Getting build events to work seamlessly when building on Linux or Windows can also be a challenge; small details perhaps, but important for DevOps where Linux build environments are the norm for web applications.
Many Visual Studio installations need to phone home from time to time to validate subscriptions and licences. These prompts can pop up at inconvenient times. Opening an old version of Visual Studio to fix a bug in some ancient legacy code, only to be confronted with a "license expired" notice, is not a good experience and can be tricky to resolve.
The top request for Visual Studio is a Linux version. Why? The main feeling expressed by users in this thread is that Visual Studio is much better than VS Code for .NET development (see above for possible reasons) though there are also comments that the big IDE is better for large solutions and for C++. The issue is marked "New" although it goes back to 2018 and in fact before as a similar request existed on the now-retired Uservoice site.
Another common complaint is that Git submodule support is lacking. This is "on the roadmap," says Microsoft.
How good is Visual Studio?
Visual Studio is the native IDE for Microsoft's platform and in that role it is excellent. It is outstanding for ASP.NET and for C++ targeting Windows. It is also very good for .NET Windows desktop development, though that story is spoilt by the confusing range of frameworks available each with pros and cons: Windows Forms, Windows Presentation Foundation, UWP, WinUI 3, and so on. Considering the challenges involved in building a full-featured IDE that supports multiple programming languages it is an amazing effort. Visual Studio is capable of managing huge multi-project solutions, particularly in its new 64-bit version.
Since Microsoft controls both Visual Studio and VS Code, the company has the best of both worlds – though even that happy position can be spoilt by internal conflicts over whether to reserve a key feature for the commercial IDE. ®