.NET Meteor Update - New Level of Productivity for .NET MAUI in VS Code
Nikita Romanov
Posted on April 1, 2024
Hi .NET MAUI developers!
I've been working with .NET MAUI since its initial preview versions and given the necessity to target both Android and iOS devices, I used Mac. At that time, Visual Studio for Mac was in the preview stage, so I decided to use VS Code and created an extension that helped me and my team build and debug .NET MAUI projects (yes, it was even before VS for Mac retirement). It became a lifesaver for me, so I published the extension as an open-source project - that's how .NET Meteor was born.
It was a great pleasure to see that many MAUI developers started using it and sharing their positive feedback with me (If you don't know what .NET Meteor is, please take a look at my first blog post outlining its main features). Your positive feedback motivates me, and I continue to enhance .NET Meteor. In this blog post, I'll list new exciting features that hopefully will help you create even better MAUI apps :)
Enhanced XAML Hot Reload
If you are a .NET Meteor user, you know that it supports XAML Hot Reload. I enhanced its mechanism to support even more usage scenarios than Visual Studio (for Windows or Mac). Just keep the app running and continue editing your XAML to save your time for building and running the application.
Performance & Memory Profiling (Trace, GCDump)
Starting with version 4.0
, .NET Meteor can profile .NET applications with integrated .NET Diagnostics tools. You can use two profiling modes: - Trace to find performance bottlenecks. - GCDump to find memory leaks (as you may know, they cause performance issues, too).
Here is a good article from my friend Alex at DevExpress: How to Profile .NET MAUI Applications and Isolate Performance-Related Issues. The blog post provides a step-by-step guide to profile and analyze your .NET MAUI app. Alex promised to publish another blog post about memory leaks, so stay tuned :)
Functional Breakpoints
.NET Meteor supports already supported Conditional breakpoints, HitPoints, and LogPoints. Now you can use Functional breakpoints as well. Simply write a full method name and .NET Meteor will pause the application when this method is called. Moreover, you can set a condition or hit count to the functional breakpoint.
We at DevExpress like to use this feature to find a method in the MAUI GitHub repository: it's sufficient to write its name and once the breakpoint is hit, you can debug the method. Since .NET Meteor downloads the source code via SourceLink, this becomes really straightforward.
Breakpoints Bound Status
The new .NET Meteor version comes with enhanced breakpoint status visualization. It helps you determine that the breakpoint has been properly bound to the source code. Initially, breakpoints have an "Unbound" status (outlined in a transparent style in the VSCode window). When the Mono Runtime sets a breakpoint in the source code, you will see that the breakpoint will change its status to "Bound" (normal red style in the VSCode window).
Debug Console Completion Items
As you may know, you can use the Watch window to evaluate expressions during debugging. Now you can additionally evaluate expressions in the VSCode Debug Console. The console has a completion item support when you type into it and .NET Meteor supports this feature as well. Note that along with public members, .NET Meteor displays private, protected, and internal members of your types.
Tip: you can use the ''!" filter string in the Debug Console window to hide all debug log messages.
Integration with DotRush
I didn't stop at Meteor and created another VS Code extension for an even better development experience - DotRush. My VS Code turned into a fully functional IDE, and I welcome you to try this extension as well. DotRush is a lightweight C# language server for VSCode. Actually, it's an analog of the standard C# DevKit, but it comes with some advanced capabilities. I will create a blog post about DotRush later, for now, you can learn what features it offers in the GitHub repository description.
When DotRush is used, .NET Meteor gets additional capabilities. For example, normally you cannot evaluate the Application.Current.MainPage
, because .NET Meteor doesn't know about the Application
type. However, when DotRush is used, .NET Meteor can ask it about unknown types and get all information for expression evaluation.
Conclusion
The .NET Meteor and DotRush extension will help you focus on your app tasks by assisting you during development. Both extensions are open source and I really appreciate your feedback made through GitHub issues. Of course, if someone of you decides to collaborate on the codebase, I will be happy to consider your pull request.
If you like my projects, you may also want to check out the free .NET MAUI controls I'm working on as part of the DevExpress team: Free .NET MAUI Controls. I know that we can make MAUI great together!
Posted on April 1, 2024
Join Our Newsletter. No Spam, Only the good stuff.
Sign up to receive the latest update from our blog.