Newsletter Archive
Browse through our collection of past newsletters. Each edition is packed with C# and .NET insights.
Page 2 of 8 (24 editions)
Local Image Embeddings in .NET — CLIP + ONNX
El Bruno introduces a .NET library that brings local CLIP image embeddings to your apps using ONNX Runtime, letting you experiment with multimodal search and image RAG without shipping data to the cloud. This post shows the model download scripts, a minimal C# example, and two runnable samples including an interactive Spectre.Console chat so you can get productive fast.
How to integrate Stripe with ASP.NET Core?
Denis Makarenko walks through Stripe integration options for ASP.NET Core, then implements a tidy server-side flow that creates a Checkout Session and verifies completion with just two minimal API endpoints. This post focuses on the why behind each choice and slips in practical tips like handling minor units, using idempotency keys, and surfacing the session ID for reliable redirects.
T4 templates on modern .NET
Ian Griffiths maps out how to run T4 templates on modern .NET by swapping Visual Studio's legacy engine for the TextTransformCore tool and wiring it into your build with Directory.Build files and a custom MSBuild target. Along the way this post unpacks assembly reference quirks, nesting with DependentUpon, and why teams like Rx.NET still lean on T4 instead of jumping to source generators.
XAML Source-Generation in .NET MAUI makes your app so much better
Break down what XAML source generation is, how it works, and why it can improve performance, reliability, and your overall development experience. If you're building apps with .NET MAUI, Daniel Hindrikes offers something you don’t want to miss.
How Function Composition Can Make Your Code Better
Mori shares a practical guide to function composition in C#, showing how composing small pure functions can turn imperative spaghetti into readable, testable pipelines. This post focuses on real-world refactors like order processing and data flows, explaining the mental model and patterns that make modern C# code easier to reason about and optimize.
Everything You Need to Know About Arrays in C#
Microsoft MVP Gulam Ali H. pulls back the curtain on what arrays really are in C#, from their heap memory layout and reference semantics to the performance cost of bounds checks. By tying arrays to List
Don't miss the next tip 💧
Get a .NET tip and curated links delivered to your inbox every week.
Automatic Service Discovery in C# with Needlr: How It Works
Nick Cosentino breaks down how Needlr auto-discovers and registers concrete classes and their interfaces in .NET, trimming boilerplate and preventing those sneaky DI runtime errors. This post explains what gets picked up, how lifetimes and exclusions work, and where source generation or reflection fits so you keep convention and manual control in balance.
LINQPad 9.6 Release Notes
Joseph Albahari rolls out LINQPad 9, a unified Windows and macOS release with C# 14 support, a redesigned UI, and a smart AI coding agent that can refactor code, write tests, and convert SQL to LINQ. This post highlights how the new provider model, faster editor and SQL tooling, and file-based app support can speed up everyday prototyping and database work across .NET 6-10.
Uno Platform 6.5: Community Standup
Sam Basu previews the Uno Platform 6.5 community standup, highlighting why these upgrades matter for building real world cross platform .NET apps. This post zeroes in on productivity boosts like Studio's agent-first AI via Antigravity MCP, a default Hot Design visual loop, and a new scope selector, plus core improvements such as Unicode TextBox input, sturdier WebView2, broader Wasm drag and drop, and sharper diagnostics that make C# and XAML work feel smoother.
.NET EF Core Should Be Your Default in 2026, Not Dapper
Vivek Baliyan revisits the Dapper vs EF Core default and shows why the once clear performance win is no longer the deciding factor. This post highlights how EF Core's productivity and evolving features can speed teams up in real apps, with pragmatic notes on when a micro ORM still makes sense.
Blue Blazes S04E02: GitHub Copilot App Modernization for .NET - featuring Matt Soucoup
Jonathan J. Tower talks with Matthew Soucoup about GitHub Copilot's App Modernization agent for .NET, unpacking how it assesses legacy codebases, plans upgrades, and executes tasks with persistent memory to keep teams moving. If you are wrangling aging .NET Framework or multi-version apps, this podcast shows how AI can de-risk migrations to modern .NET and the cloud while complementing helpers like Web Forms to Blazor tooling.
Blazor Basics: Should You Migrate to .NET 10?
Claudio Bernasconi makes the case for upgrading Blazor apps to .NET 10, not just because it is LTS but for the practical gains it brings. This post highlights smaller payloads for faster startup, a PersistentState attribute that tames prerendering on Blazor Server, new JS interop that can construct JS objects, and NavigationManager.NotFound for consistent 404s across render modes. The focus is on what real apps get in return: quicker loads, less glue code and more correct behavior.
Mastering Industrial Camera Integration: C# + VisionPro Real-Time Acquisition Deep-Dive
JIN walks through building a production-ready C# integration with Cognex VisionPro for real-time industrial camera acquisition, from device enumeration and connections to single-shot and continuous preview. In this post you pick up pragmatic patterns for safe resource disposal and troubleshooting the classics like 'connected but no frames' and memory leaks so your capture pipeline runs 24/7 without drama.
Reliably Refreshing the WebView2 Control
Rick Strahl explains why WebView2.Reload can leave previews stale and shows how to force a true hard refresh in C#, so images and other dependent resources actually update. In this post he compares a simple URL reset, Profile.ClearBrowsingDataAsync, and a DevTools cache clear, with practical notes for WPF and WinForms and when to use each.
Collection Performance: High-Performance Collection Randomization in .NET
Randomizing large collections without tanking throughput is trickier than it looks, and dotnettips digs into what actually makes a shuffle fast in .NET. This post compares popular techniques with cache friendly in-place algorithms, explains how Random usage and allocations impact scalability, and shares practical snippets you can drop into arrays and lists.
EF Core State Validation
Ricardo Peres tackles those mysterious SaveChanges exceptions by validating EF Core state ahead of time with ChangeTracker metadata, surfacing friendly ValidationResult messages for required and max length issues. This post then shows three practical ways to bring full Data Annotations validation into EF Core using a SaveChanges override, a SaveChangesInterceptor, or the SavingChanges event so you can pick the least intrusive option for your app.
ACID in Practice for .NET: Isolation Levels, Anomalies, and Transaction Pitfalls
Sudhir Mangla untangles why isolation levels, not just transactions, decide whether your .NET app hits lost updates, phantoms, or deadlocks, especially when RCSI and Snapshot shift behavior in Azure SQL and RDS. This post delivers battle-tested EF Core patterns like RowVersion concurrency, savepoints, targeted UPDLOCK usage, plus outbox and idempotency with Polly retries to keep your data sane under load.
Local Embeddings in .NET — The Easy Way
El Bruno introduces ElBruno.LocalEmbeddings, a lightweight NuGet package that generates embeddings locally in .NET with a few lines of C#, perfect for tinkering with Foundry Local or Ollama. This post walks through single and batch generation and cosine similarity to help you prototype semantic search and RAG fast without spinning up cloud vector infrastructure.
Don't miss the next tip 💧
Get a .NET tip and curated links delivered to your inbox every week.
How to Implement Abstract Factory Pattern in C#: Step-by-Step Guide
Nick Cosentino lays out a step-by-step path to implementing the Abstract Factory pattern in C#, complete with runnable examples that go from interfaces to concrete factories and client code. In this post you will learn how to keep related object families consistent, plug factories into DI, dodge common gotchas, and add new variants without sprinkling conditionals everywhere.
C# 14 in .NET 10: language features that actually matter in production
C# 14 is not about syntactic novelty. It is about reducing friction in patterns teams already use: extensions, domain modeling, source generation, and performance-sensitive code.. Anderson Godoy walks us through the changes that will stand out the most.
Microsoft .NET Code Analysis: Efficient String Prefix Checks — StartsWith() vs.IndexOf()
dotNetDave digs into .NET code analysis rule CA1858 to show why StartsWith is the right tool for string prefix checks compared to IndexOf, covering performance, clarity, and culture-safe comparisons. This post explains when to use StringComparison, what the analyzer is nudging you toward, and how a tiny change can trim allocations in hot paths.
Aspire App Lifecycle Guide
Microsoft's Aspire lifecycle guide walks through inner-loop development with aspire run, local deployment with aspire deploy, and CI/CD publishing via GitHub Actions, all using a single AppHost to keep environments consistent. In this post you follow a Blazor and SQL Server example with persistent volumes and generated Docker Compose artifacts that make it easier to move from local debugging to production-ready containers.
Everyone Tunes C#.NET APIs Wrong
Ashok Reddy shares how he turned sluggish C# and .NET endpoints into snappy APIs with a measured approach that delivered a 20x speedup. This post zeroes in on real bottlenecks through profiling and tackles common culprits like chatty logging and request queuing so your services stay fast when the load gets real.
The EF Core AsNoTracking Mistake That Quietly Broke My Data Layer
Michael Preston shares how a one-line EF Core optimization using AsNoTracking trimmed memory and latency but quietly broke identity resolution across queries in the same request scope. This post peeks under EF Core's hood and shows when to keep tracking on, when no-tracking is safe, and how to dodge sneaky relationship bugs.
Local Images in MAUI Blazor: One Problem, Four Solutions, One Winner
Joachim Leonfellner shows off four methods to use local images in MAUI Blazor. Along the way, he covers the pros and cons and identifies a clear winner.
Enterprise Patterns for ASP.NET Core Minimal API: Data Transfer Object Pattern
Chris Woodruff explains how the Data Transfer Object pattern keeps ASP.NET Core Minimal API contracts stable by separating domain and persistence models from what clients see, avoiding the pitfalls of returning EF Core entities. This post shares practical mapping techniques, before and after endpoints, and sensible rules for when DTOs matter so your APIs are safer, slimmer, and easier to evolve.
Getting Started with the Blazor Skeleton Component
Héctor Pérez walks through the Telerik UI for Blazor Skeleton component and shows how skeleton screens make loading states feel faster while keeping layouts stable. Using a simple IsLoading flag and matching shapes and animations to avatars, text, and images, this post demonstrates a practical pattern you can drop into real Blazor pages for a smoother UX.
Introducing Flexible Pricing for Avalonia Accelerate
Mike James introduces flexible rent-to-own pricing for Avalonia Accelerate, where monthly subscribers receive a permanent license after twelve months and shipped apps keep running thanks to no runtime checks. This post also unveils a refreshed customer portal and reseller redemption that streamlines billing, seat management, upgrades, and support, making professional .NET UI with Avalonia easier to adopt in real teams.
The Valet Key Pattern on Azure: Secure Direct Uploads with SAS and ASP.NET Core
Sudhir Mangla walks through the Valet Key pattern so your ASP.NET Core API authorizes uploads while Azure Blob Storage does the heavy lifting using User Delegation SAS and managed identities. This post delivers a production-ready blueprint with modern .NET snippets for a tiny valet API, browser chunked uploads and integrity checks, plus zero trust essentials like quarantine, scanning, and targeted revocation.
Convert HTML to PDF in .NET (C#): Real-World Scenarios, PDF Standards, and BestPractices
Bjoern Meyer shows how to turn HTML into reliable PDFs in C# with TX Text Control, including a small .NET sample, adding headers and footers, and exporting to PDF/A or PDF/UA. The heart of this post is why PDFs win for invoices, reports, and contracts where consistency, archiving, accessibility, and a defensible layout matter more than browser quirks.
Don't miss the next tip 💧
Get a .NET tip and curated links delivered to your inbox every week.
C# Console menus with Actions
Karen Payne shares a simple pattern for building interactive C# console menus using Spectre.Console with Action delegates, including options that pass parameters for real tasks like saving images or powering dotnet tools. This post explains the tiny set of classes that wire selections to operations and includes tips and sample repos to quickly prototype and organize learning or utility work.
The '#:package' Trick That Turns One .cs File Into a Real App
Abe Jaber shows how the new #:package directive in .NET 10 lets you ship a real console app from a single .cs file, complete with NuGet dependencies, no csproj required. This post focuses on practical guardrails for tiny but reliable tools like parsing args, piping stdin, cancellation, predictable exit codes and timeouts so you can build internal utilities fast without the scaffolding overhead.
Mastering Business Logic in .NET: A Deep Dive into the Specification Pattern
Ahmad Al-Freihat shows how the Specification Pattern can rescue sprawling business rules by turning them into reusable, testable objects you can use both in memory and in EF Core queries. This post introduces the Masterly.Specification library with composable operators like And, Not, Xor and Implies, a fluent builder, diagnostics and caching so your domain stays a single source of truth and your code stays readable.
Goodbye Factory Classes: Modern C# Activators Explained
Mohammad Shoeb explains how modern C# activators, reflection, and dependency injection can replace most factory classes and make object creation simpler in real applications. Using a multi-tenant payments example, this post shows how Activator plus a container unlocks plugin-style extensibility, fewer deployments, and guidance on when factories still belong.
What It Took to Implement VS Code Debugging for .NET nanoFramework
Laurent Ellerbach shows how .NET nanoFramework brought full VS Code debugging to embedded C#, translating DAP to the device Wire Protocol through a C# bridge and TypeScript adapter without changing device firmware. This post digs into pdbx and portable PDB symbol mapping to land breakpoints on the right lines, while sharing pragmatic architecture choices and AI-assisted workflows you can reuse for your own tooling.
Reflection in C#: The Ultimate Guide
Michael Maurice maps out how reflection turns C# from strongly typed to smartly adaptable, from simple type inspection to on-the-fly invocation, plugin discovery, and even code generation. This post explains where reflection quietly powers your favorite frameworks, when to use it yourself, and how to avoid the performance potholes with practical patterns.