Microsoft declares .NET MAUI extension for VS Code production-ready – but devs will take some convincing

Microsoft declares .NET MAUI extension for VS Code production-ready – but devs will take some convincing
Visual Studio Code

The Visual Studio Code (VS Code) extension for .NET MAUI (Multi-platform App UI) is now generally available. It’s a means of developing cross-platform mobile and desktop applications on Windows and Mac, and the official successor to the discontinued Visual Studio Mac.

Maddy Montaquilla, senior program manager for .NET MAUI, posted that “the .NET MAUI VS Code extension is out of preview” and highlighted new features including XAML IntelliSense – which provides code completion, tooltips and code navigation – as well as Hot Reload for both XAML and C#.

XAML is the XML-based language for defining a GUI in MAUI, and Hot Reload is the feature that allows developers to edit the code while debugging and see the UI update on the fly. The XAML Hot Reload is enabled by default, but the feature for C# is “still in an experimental state,” according to Montaquilla, therefore off by default. MAUI targets Windows, Mac Catalyst (Mac desktop apps which share code with iPad apps), Android, iOS and Samsung’s Tizen. MAUI does not target Linux despite heated discussion – and despite Linux being originally well supported by Xamarin, the Mono-based .NET framework which MAUI replaces.

On Windows, most developers will use Visual Studio for MAUI applications, but on Mac VS Code is the official option following the demise of VS Mac. The MAUI extension requires C# Dev Kit, which means organizations need a Visual Studio license in order to use it, unlike most VS Code extensions.

Although now at version 1.1.6, developers will be wary of the quality of the extension. Last month a dev reviewing the extension said it was “missing critical features, more and more broken on each new version. This is not a replacement for VS for Mac.” The C# Dev Kit also has poor reviews.

Developing a cross-platform app with .NET MAUI on a Mac with VS Code

A curious chapter in this story relates to UI testing MAUI apps with Appium – an open source project for UI automation. Earlier this week, senior software engineer Gerald Versluis posted steps for using Appium to test a MAUI application on Windows, explaining that it requires a component called WinAppDriver to communicate between Appium and the target application, and recommending version 1.2.1.

A dev was quick to comment that “WindowsAppDriver … is a repository that has seen no development for several years and the repository has issues with no responses.”

The last WinAppDriver full release was in November 2020. There was also a pre-release of version 1.3 in July 2021 that Versluis warns not to use. A lengthy GitHub thread from around the same date states that “development would be paused for at least six months” adding that “we are committed to bringing critical improvements for WinAppDriver to keep pace with other developments in the platform.” The post implies that the team which was developing WinAppDriver lacks the resources to continue with it, focusing instead on Windows 11.

Since then developers have pleaded for an update, but so far without success. “I wrote to about 4–5 main committers of this repo at MS asking for an update. Two of those bounce. Update: no one answered,” lamented one in March 2022. A common request is to make the project open source. The discussion now is mainly about alternatives. There are numerous issues with WinAppDriver – not least that it is only supported on Windows 10 and Windows Server 2016, and not on Windows 11.

“I can understand that that is not a good look,” said Versluis. “However, when using the version specified, all seems to work fine for what we’ve been using it for in the .NET MAUI codebase. Besides it not being updated and not looking maintained, is there anything specific you have a problem with?”

Discussions like this contribute to a sense that, despite the efforts of the MAUI team at Microsoft, it is not a high priority. That will dampen enthusiasm for adoption.