In my Blazor projects, the business logic has been tested with xUnit for a long time, but the components themselves were not. If an @if showed the wrong button, I only saw it by opening the page. In this post, we add a bUnit test project to a Blazor application and cover the cases I run into most often.
Build an MCP server in C# and plug it into Claude Code
Part 3 in the “Agent Skills” series: Part 1 – What an agent skill is | Part 2 – Create your own skill | Version française
In the first article and the second one of this series, we saw what a skill is and how to create one. A skill gives instructions to the agent, but it doesn’t give it access to new data or new systems. For that, you need tools, and that’s the role of MCP.
[Read More]Top 10 C# 13/14 and .NET 9/10 Features
Create a Blazor App with ML.NET
dotnet watch: you use it for hot reload. You should do more with it.
Every time I changed code, I’d Alt-Tab to the terminal, arrow up, Enter. dotnet test. Wait. Check. Back to the editor. Repeat.
It’s not the end of the world. But over a full day, it adds up, mostly in lost focus. The annoying part is that I already had dotnet watch in my workflow for hot-reloading a web app. I just never thought to ask what else it could do.
Microsoft Agent Framework: First Agent, MCP, and Multi-Agent Workflows
MCP in C#: Exposing Your Own Tools to Any AI Client
Inside the Architecture: Patterns, Data Modeling, and Extensibility in Mes Recettes
Mes Recettes: Building a Modern Recipe Index with Blazor WebAssembly & Supabase
Supabase and Table Relationships
For one of my .NET projects, I use Supabase to store my data. Supabase is an open-source alternative to Firebase. It is based on PostgreSQL and provides a REST API and websockets to interact with the database.
To connect my .NET project to Supabase, I use Supabase Sharp and you can also find the documentation on the official Supabase website.
The ease of use of the library is really interesting and it also allows me to use the Supabase website directly to manage my data without having to write code to do it in my own applications.
[Read More]