Should I use self-contained or framework-dependent publishing in Docker images?
ASP.NET Core has two different publishing modes, framework-dependent and self-contained. In this post I compare the impact of the publishing mode on Docker image size. I compare an image published...
View ArticleAuto-assigning issues using a GitHub Action: Creating my first GitHub app...
This is the fourth post in the series: Creating my first GitHub app with Probot. Part 1 - Creating a GitHub app with create-probot-app Part 2 - Creating the auto-assign-issues bot Part 3 - Deploying a...
View ArticleAn introduction to the Data Protection system in ASP.NET Core
In this post I provide a primer on the ASP.NET Core data-protection system: what it is, why do we need it, and how it works at a high level. Why do we need the data-protection system? The...
View ArticleEnabling 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 ArticlePrerendering a Blazor WebAssembly app to static files, without an ASP.NET...
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...
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 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 Phillip: IConfigurationRoot.GetDebugView is really useful for inspecting your resolved configuration settings! 👨🏽💻 It's been around since .NET Core 3.0 and I...
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...
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...
View ArticleA Simple Moving Average calculator: Creating a Simple Moving Average...
This is the first post in the series: Creating a Simple Moving Average calculator in C#. Part 1 - A Simple Moving Average calculator (this post) Part 2 - Making the calculator thread-safe Part 3 -...
View ArticleMaking the calculator thread-safe: Creating a Simple Moving Average...
This is the second post in the series: Creating a Simple Moving Average calculator in C#. Part 1 - A Simple Moving Average calculator Part 2 - Making the calculator thread-safe (this post) Part 3 -...
View Article