Enabling prerendering for Blazor WebAssembly apps
In this post I describe the steps to enable server-prerendering for a Blazor WebAssembly application. This post serves as an introduction to some more interesting prerendering approaches I'll be...
View ArticlePrerending a Blazor WebAssembly app to static files, without an ASP.NET Core...
In this post I describe how you can prerender all the pages in a Blazor WebAssembly app, without requiring a host app. That means you can still host your Blazor WebAssembly as static files using GitHub...
View ArticleFinding all routable components in a Blazor App
In my previous post I showed how you could statically prerender all the routable components in your Blazor WebAssembly app ahead-of-time so that you could host your app in static-file hosting. One of...
View ArticleUsing source generators to find all routable components in a Blazor...
In the previous post I described a way to find all the "routable" components in a Blazor app using reflection. In this post I show an alternative approach using a source generator. I'm not going to...
View ArticleUsing source generators to to generate a menu component in a Blazor app
In the previous post, I showed how to create a source generator that finds all the routeable components in a Blazor application at build time. In this post, I extend that approach, collecting...
View ArticleUsing source generators with a custom attribute to generate a menu component...
In my previous post, I showed how to create a source generator that finds all the routeable components in a Blazor application at build time, and uses that to build a nav control, without having to...
View ArticleConfiguring HTTPS using a custom TLS certificate with Netlify and Cloudflare
I recently received a notification from Netlify that there was a problem renewing the TLS certificate for one of my domains. In this post I discuss why I received that notification, and how I resolved...
View ArticleInstalling Docker Desktop for Windows and WSL 2
In this post, I describe how to install WSL 2 to serve as the backend for Docker Desktop for Windows. Previously I've always worked with Linux in a Virtual Machine using something like VMWare or...
View ArticleRunning Kubernetes and the dashboard with Docker Desktop
In my previous post, I showed how you can install Docker Desktop for Windows using WSL 2. In this post I show how to enable Kubernetes support, and how to deploy the Kubernetes Dashboard to give your...
View ArticleDebugging configuration values in ASP.NET Core
Recently I saw this tweet from Cecil Philip: IConfigurationRoot.GetDebugView is really useful for inspecting your resolved configuration settings! 👨🏽💻 It's been around since .NET Core 3.0 and I never...
View ArticleViewing app configuration using Oakton's Describe command and Spectre.Console
In my previous post I showed how you could use GetDebugView() to expose a list of your application's configuration keys, values, and their source as an API endpoint. In this post I show an alternative...
View ArticleASP.NET Core in Action, Second Edition is available now!
My new book, ASP.NET Core in Action, Second Edition is available now! In this post I describe a little bit about the process of updating the book, talk about what's changed from the first version (and...
View ArticleViewing overwritten configuration values in ASP.NET Core
In a previous post I showed how you could create your own version of the IConfigurationRoot.GetDebugView() extension method, to visualize the configuration values in your ASP.NET Core app. In this post...
View ArticleFixing build warning NETSSDK1138 when building projects with end-of-life .NET...
In this short post I describe how to get rid of the following build warning: C:\Program Files\dotnet\sdk\5.0.100\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.EolTargetFrameworks.targets(28,5): warning...
View ArticleTrying out the open-source eCommerce platform nopCommerce using Docker
In this post I take a short look at the open source ASP.NET Core eCommerce platform, nopCommerce. I show the experience of building the application locally and hosting it in a Docker container. What is...
View ArticleAnalyzers for ASP.NET Core in .NET 6: Exploring .NET 6 - Part 7
Analyzers have been built into the C# compiler for some time now. Anyone can write their own analyzer, distribute it as a NuGet package, and hook into the compiler to find potential code issues. In...
View ArticleImproving logging performance with source generators: Exploring .NET 6 - Part 8
In this post I look at the new LoggerMessage source generator, showing how and when to use it. I start by showing the existing ways to use ILogger, pitfalls to watch out for, and approaches to improve...
View ArticleSource generator updates: incremental generators: Exploring .NET 6 - Part 9
In the previous post, I described the LoggerMessage source generator that can give performance benefits without the boilerplate. In this post I look at the updates to the source generator API in .NET...
View ArticleNew dependency injection features in .NET 6: Exploring .NET 6 - Part 10
In this post I talk about some of the new features added to Microsoft.Extensions.DependencyInjection and Microsoft.Extensions.DependencyInjection.Abstractions in .NET 6. Some of these were added to...
View Article[CallerArgumentExpression] and throw helpers: Exploring .NET 6 - Part 11
In this post I describe a new feature in C# 10, the [CallerArgumentExpression] attribute, how it can be used to create "throw helpers", and the addition of a throw helper to ArgumentNullException....
View Article