Reinventing how .NET builds and ships

#585 – November 30, 2025

from 24 hour builds to under 4 hours

Reinventing how .NET builds and ships
about 1 hour by Matt Mitchell

Microsoft rewrote how .NET builds and ships software after their old system became too slow and unpredictable. The old approach used separate code repositories that had to coordinate changes through a complex web of dependencies, creating massive delays. Their new unified build system puts all .NET code in one virtual repository and builds everything together in under 4 hours instead of 24+ hours. This makes it much faster to ship fixes and new features to customers.

OWASP Top 10: Navigating the New AppSec Landscape in the Age of AI
sponsored by Snyk

The new OWASP Top 10 report is here, reshaping how organizations think about app security. Join Vandana Verma Sehgal, OWASP Leader and Staff Developer Advocate at Snyk, Thursday, Dec 11 at 11am ET for a live session. Learn key updates, see how threats are reshaping AppSec priorities and earn 1 CPE credit for attending live!

You're probably doing EF migrations wrong
8 minutes by Scott Galloway

Entity Framework migration bundles provide a secure way to run database migrations in production instead of using MigrateAsync at startup. MigrateAsync gives your app dangerous database owner rights and can cause startup failures. Bundles create standalone executables that run migrations during deployment, keeping your app secure. They work well in CI pipelines and provide better error visibility than runtime migrations.

Why do you need to write architecture tests in .NET
11 minutes by Anton Martyniuk

Architecture Tests ensure that your system's design rules are enforced and that your code follows the architecture you've set up. In this post Anton explores what architecture tests are and why they matter, writes architecture tests in .NET with NetArchTest, enforces clean architecture and layer isolation and tests modular boundaries in Modular Monoliths.

Multitenancy techniques for the UI in ASP.NET Core
4 minutes by Ricardo Peres

Ricardo covers UI customization in multitenant ASP.NET Core apps. He suggests loading different views per tenant by implementing IViewLocationExpander to search tenant-specific folders first before falling back to default locations. Tag helpers let you conditionally show content based on tenant ID using custom tags with name and except attributes. You can also inject ITenantIdProvider directly into Razor views for programmatic tenant logic.

Export .NET worker and console metrics using OpenTelemetry
8 minutes by Adolfo

Adding OpenTelemetry to a C# worker service makes it much easier to understand how the service is running. It collects metrics, traces, and logs in a standard way and sends them to Prometheus for easy monitoring. This setup improves troubleshooting, gives real-time visibility, and avoids vendor lock-in.

Before we wrap up, IronSoftware, one of the sponsors of C# Digest, is doing a developer writing contest where you can win $5,000 so give it a go.

And the most popular article from the last issue was:

newsletters