﻿<?xml version="1.0" encoding="utf-8"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><atom:link rel="self" type="application/rss+xml" href="https://www.meziantou.net/feed.rss" /><title>Meziantou's blog</title><description>Blog about Microsoft technologies (.NET, ASP.NET Core, Blazor, EF Core, WPF, TypeScript, etc.)</description><lastBuildDate>Mon, 08 Jun 2026 12:00:00 GMT</lastBuildDate><link>https://www.meziantou.net/?utm_medium=social&amp;utm_source=syndication</link><item><title>New features and Roslyn analyzers for Meziantou.Framework.FullPath</title><description>A few years ago, I introduced , a library to ensure you always deal with full paths in your applications and provide common methods to manipulate them easily. Recently, I&amp;#x27;ve added new features to the library, including new methods and a set of Roslyn analyzers to help you use the library correctly. The main idea of FullPath is to avoid bugs related to relative paths by forcing the use of absolute paths&amp;#x2026;</description><link>https://www.meziantou.net/new-features-and-roslyn-analyzers-for-meziantou-framework-fullpath.htm?utm_medium=social&amp;utm_source=syndication</link><guid isPermaLink="false">b6a6bc26-85e0-4c42-8f72-f6a1d8ae6d15</guid><dc:creator>Gérald Barré</dc:creator><pubDate>Mon, 08 Jun 2026 12:00:00 GMT</pubDate><category>.NET</category><category>Roslyn</category></item><item><title>Blazor - How to set a base component for all Razor components</title><description>When building a Blazor application, you may want a custom base component for all your Razor components. This is useful for sharing common functionality like cancellation tokens, logging, or state management across all components. Instead of adding @inherits YourBaseComponent to every Razor file, you can use the _Imports.razor file to set it globally. Using _Imports.razor to set a default base component&amp;#x2026;</description><link>https://www.meziantou.net/blazor-how-to-set-a-base-component-for-all-razor-components-using-viewstart-razo.htm?utm_medium=social&amp;utm_source=syndication</link><guid isPermaLink="false">c19dbbd2-cc57-4fca-ab7e-d367c1e4ab7b</guid><dc:creator>Gérald Barré</dc:creator><pubDate>Mon, 18 May 2026 12:00:00 GMT</pubDate><category>Blazor</category><category>.NET</category><category>ASP.NET Core</category><category>Web</category></item><item><title>Propagating OpenTelemetry context in .NET</title><description>When building distributed systems, maintaining observability across process boundaries is crucial for understanding the flow of requests through your application. OpenTelemetry provides a standard way to propagate tracing context, but implementing it correctly requires understanding several key concepts. This post explains how to propagate telemetry context in .NET applications, particularly when using&amp;#x2026;</description><link>https://www.meziantou.net/propagating-opentelemetry-context-in-dotnet.htm?utm_medium=social&amp;utm_source=syndication</link><guid isPermaLink="false">2f6f4d01-95f9-4c0c-980c-2bc80fe89d50</guid><dc:creator>Gérald Barré</dc:creator><pubDate>Mon, 11 May 2026 12:00:00 GMT</pubDate><category>.NET</category></item><item><title>Disable HTTP caching by default in ASP.NET Core APIs</title><description>When building APIs with ASP.NET Core, it&amp;#x27;s crucial to explicitly control caching behavior. Unlike web pages where caching often improves user experience, API responses should not be cached by default unless you intentionally design them to be cacheable. Unintended caching can lead to serious issues, including stale data, security vulnerabilities, and hard-to-reproduce bugs. Understanding HTTP caching&amp;#x2026;</description><link>https://www.meziantou.net/disable-http-caching-by-default-in-asp-net-core-apis.htm?utm_medium=social&amp;utm_source=syndication</link><guid isPermaLink="false">5b874206-de22-4057-a476-053a9b86896b</guid><dc:creator>Gérald Barré</dc:creator><pubDate>Mon, 04 May 2026 12:00:00 GMT</pubDate><category>ASP.NET Core</category><category>.NET</category><category>Web</category></item><item><title>Evaluating CRON and RRule expressions in .NET</title><description>Evaluating recurring date patterns is a common requirement in many applications. Whether you need every day, every Monday at 9 AM, or the last day of each month, you need a reliable way to calculate upcoming occurrences. Meziantou.Framework.Scheduling is a NuGet package that parses and evaluates both CRON expressions and iCalendar recurrence rules (RRule). Installation You can install the package from&amp;#x2026;</description><link>https://www.meziantou.net/evaluating-cron-and-rrule-expressions-in-dotnet.htm?utm_medium=social&amp;utm_source=syndication</link><guid isPermaLink="false">d0fb6951-9daa-4d2f-bb37-0ad2317aa53d</guid><dc:creator>Gérald Barré</dc:creator><pubDate>Mon, 20 Apr 2026 12:00:00 GMT</pubDate><category>.NET</category></item><item><title>Suppressing Roslyn Analyzer Warnings Programmatically using DiagnosticSuppressor</title><description>Roslyn analyzers are great for enforcing coding standards and finding bugs. However, they can sometimes report false positives or warnings you want to ignore in specific contexts. You can suppress these warnings using #pragma directives or [SuppressMessage] attributes, but both approaches require modifying the source code. A DiagnosticSuppressor is a Roslyn component that suppresses diagnostics reported&amp;#x2026;</description><link>https://www.meziantou.net/suppressing-roslyn-analyzer-warnings-programmatically-using-diagnosticsuppressor.htm?utm_medium=social&amp;utm_source=syndication</link><guid isPermaLink="false">2e365424-c7dd-4241-87de-854e4cd50af6</guid><dc:creator>Gérald Barré</dc:creator><pubDate>Mon, 13 Apr 2026 12:00:00 GMT</pubDate><category>Roslyn</category><category>.NET</category></item><item><title>Accessing files from the action repository in a GitHub Composite Action</title><description>GitHub Actions allows you to create reusable actions. One of the easiest ways to do this is to use Composite Actions, which let you combine multiple steps into a single action. This reduces code duplication across your workflows. When creating a composite action, you may need to reference files stored in the action repository, such as a PowerShell or Bash script. By default, when an action runs, the&amp;#x2026;</description><link>https://www.meziantou.net/accessing-files-from-the-action-repository-in-a-github-composite-action.htm?utm_medium=social&amp;utm_source=syndication</link><guid isPermaLink="false">b07383d3-ba85-4928-97a1-be673d0a103c</guid><dc:creator>Gérald Barré</dc:creator><pubDate>Mon, 06 Apr 2026 12:00:00 GMT</pubDate><category>Tools</category></item><item><title>URL Pattern Matching in .NET</title><description>Working with URLs in .NET applications often involves pattern matching for routing, security policies, or content filtering. While you could write custom regex patterns or string comparisons, there&amp;#x27;s a better way: the Meziantou.Framework.Uri package brings standardized URL pattern matching to .NET. This package implements the WHATWG URL Pattern API specification, providing a consistent and powerful way to&amp;#x2026;</description><link>https://www.meziantou.net/url-pattern-matching-in-dotnet.htm?utm_medium=social&amp;utm_source=syndication</link><guid isPermaLink="false">9f1316f0-db38-47a1-8196-045966873bdb</guid><dc:creator>Gérald Barré</dc:creator><pubDate>Mon, 30 Mar 2026 12:00:00 GMT</pubDate><category>.NET</category></item><item><title>Speed Up .NET CI with Test Sharding</title><description>A shard is a deterministic subset of your test suite. Test sharding means splitting one long test run into multiple smaller runs, and executing them in parallel in CI. Instead of waiting for one job that runs every test, you wait for the slowest shard. This often reduces CI wall-clock time and gives faster feedback. Meziantou.ShardedTest is a .NET global tool that creates deterministic shards and runs&amp;#x2026;</description><link>https://www.meziantou.net/split-dotnet-test-projects-into-shards-with-meziantou-shardedtest.htm?utm_medium=social&amp;utm_source=syndication</link><guid isPermaLink="false">7b6dcfee-38f3-417a-8118-87e3ddd887f1</guid><dc:creator>Gérald Barré</dc:creator><pubDate>Mon, 23 Mar 2026 12:00:00 GMT</pubDate><category>.NET</category><category>Tools</category></item><item><title>Implementing RFC-compliant HTTP caching for HttpClient in .NET</title><description>HTTP caching is one of the most effective ways to improve application performance by reducing network traffic, minimizing server load, and decreasing response times. While browsers automatically implement HTTP caching, the same isn&amp;#x27;t true for HttpClient in .NET, which processes every request independently without built-in caching support. This post shows how to add standards-compliant HTTP caching to&amp;#x2026;</description><link>https://www.meziantou.net/implementing-rfc-compliant-http-caching-for-httpclient-in-dotnet.htm?utm_medium=social&amp;utm_source=syndication</link><guid isPermaLink="false">6a166ceb-a5a3-4e17-9fd5-65c71641ca3e</guid><dc:creator>Gérald Barré</dc:creator><pubDate>Mon, 16 Mar 2026 12:00:00 GMT</pubDate><category>.NET</category></item></channel></rss>