﻿<?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, 09 Mar 2026 12:00:00 GMT</lastBuildDate><link>https://www.meziantou.net/?utm_medium=social&amp;utm_source=syndication</link><item><title>Visualize GitHub Actions runs with Meziantou.GitHubActionsTracing</title><description>I recently released Meziantou.GitHubActionsTracing, a tool that converts GitHub Actions workflow runs into trace data. In this post, I show how to use it to debug slow or flaky CI pipelines with timeline-based analysis instead of raw logs only. Why GitHub Actions runs are hard to diagnose GitHub Actions logs are great for understanding what happened, but not for quickly seeing where time is spent. When a&amp;#x2026;</description><link>https://www.meziantou.net/visualize-github-actions-runs-with-meziantou-githubactionstracing.htm?utm_medium=social&amp;utm_source=syndication</link><guid isPermaLink="false">cbfe38e9-d7c2-45cf-a55e-c5cafe33069f</guid><dc:creator>Gérald Barré</dc:creator><pubDate>Mon, 09 Mar 2026 12:00:00 GMT</pubDate><category>Tools</category></item><item><title>Creating case-sensitive folders on Windows using C#</title><description>Windows has supported case-sensitive file operations for a long time, but it was not easily accessible or enabled by default. Since Windows 10 (version 1803), it is possible to enable case sensitivity on a per-directory basis. This feature was introduced primarily to support the Windows Subsystem for Linux (WSL), but it can be used by any application. In this post, we&amp;#x27;ll see how to enable case sensitivity&amp;#x2026;</description><link>https://www.meziantou.net/creating-case-sensitive-folders-on-windows-using-csharp.htm?utm_medium=social&amp;utm_source=syndication</link><guid isPermaLink="false">7947d924-5986-4694-8b84-45b410b72da8</guid><dc:creator>Gérald Barré</dc:creator><pubDate>Mon, 02 Mar 2026 12:00:00 GMT</pubDate><category>.NET</category><category>Windows</category></item><item><title>Reserved filenames on Windows (CON, PRN, AUX, NUL...)</title><description>Windows has a set of reserved filenames that cannot be used for files or folders. These names are reserved for legacy reasons, dating back to DOS. If you try to create a file or folder with one of these names, you will get an error. The list of reserved names is: CON, PRN, AUX, NUL COM0 through COM9 LPT0 through LPT9 These names come from DOS, where devices were exposed as special file-like names. For&amp;#x2026;</description><link>https://www.meziantou.net/reserved-filenames-on-windows-con-prn-aux-nul.htm?utm_medium=social&amp;utm_source=syndication</link><guid isPermaLink="false">d9ef4eef-0df6-45a0-9986-ccd372a6878f</guid><dc:creator>Gérald Barré</dc:creator><pubDate>Mon, 23 Feb 2026 12:00:00 GMT</pubDate><category>.NET</category><category>Windows</category></item><item><title>Validating PowerShell script syntax in GitHub Actions workflows</title><description>When writing GitHub Actions workflows, it is generally recommended to keep your scripts in separate files and reference them using the path attribute of the run step. This allows you to lint and test your scripts easily using standard tools. However, this approach is not always practical. For instance, when creating a reusable workflow or a simple action, you might prefer to keep everything in a single&amp;#x2026;</description><link>https://www.meziantou.net/validating-powershell-script-syntax-in-github-actions-workflows.htm?utm_medium=social&amp;utm_source=syndication</link><guid isPermaLink="false">f2a5f211-cabc-450a-ab86-08dafc62186b</guid><dc:creator>Gérald Barré</dc:creator><pubDate>Mon, 16 Feb 2026 12:00:00 GMT</pubDate><category>PowerShell</category><category>Tools</category></item><item><title>Getting more information in MSBuild binlogs with property tracking</title><description>MSBuild binary logs (binlogs) are a powerful tool for diagnosing build issues. If you&amp;#x27;re not familiar with binlogs, check out my post Exploring a MSBuild binary log using the binary log viewer to get started, or Stop using diagnostic verbosity in MSBuild to understand why binlogs are better than diagnostic verbosity. By default, binlogs capture a lot of information, but you can get even more details about&amp;#x2026;</description><link>https://www.meziantou.net/getting-more-information-in-msbuild-binlogs-with-property-tracking.htm?utm_medium=social&amp;utm_source=syndication</link><guid isPermaLink="false">df491877-23d3-4093-9dc3-2d16a5468e7b</guid><dc:creator>Gérald Barré</dc:creator><pubDate>Mon, 09 Feb 2026 12:00:00 GMT</pubDate><category>.NET</category></item><item><title>Retrieve method source file location at runtime using Portable PDBs in .NET</title><description>When debugging or logging, you often need to know where a method is defined in your source code. While .NET provides caller information attributes like [CallerMemberName], [CallerFilePath], and [CallerLineNumber], these only work at compile-time and require you to add parameters to your methods. What if you want to retrieve source file information for any method at runtime? One use-case is&amp;#x2026;</description><link>https://www.meziantou.net/retrieve-method-source-file-location-at-runtime-using-portable-pdbs-in-dotnet.htm?utm_medium=social&amp;utm_source=syndication</link><guid isPermaLink="false">fe1bfad9-dc8d-4558-b253-5fd164b66ec5</guid><dc:creator>Gérald Barré</dc:creator><pubDate>Mon, 19 Jan 2026 12:00:00 GMT</pubDate><category>.NET</category></item><item><title>Reduce GitHub Actions runner CPU usage</title><description>If you&amp;#x27;re using self-hosted GitHub Actions runners, you might have noticed they can be surprisingly CPU-intensive, even when idle. A closer look reveals that a single runner can peg a CPU core at 100% utilization. This isn&amp;#x27;t a bug in your workflow; it&amp;#x27;s a deliberate design choice in the runner&amp;#x27;s sleep mechanism. The problem: Busy-waiting Instead of using standard, efficient sleep functions provided by the&amp;#x2026;</description><link>https://www.meziantou.net/reduce-github-actions-runner-cpu-usage.htm?utm_medium=social&amp;utm_source=syndication</link><guid isPermaLink="false">a6878532-2ee6-430c-8356-6dd2dee4e04c</guid><dc:creator>Gérald Barré</dc:creator><pubDate>Mon, 29 Dec 2025 12:00:00 GMT</pubDate><category>Tips</category></item><item><title>Understanding and Managing Mark of the Web in .NET</title><description>What is Mark of the Web? Mark of the Web (MOTW) is a Windows security feature that protects users from potentially unsafe files downloaded from the internet. When you download a file, Windows automatically adds a special metadata tag indicating the file originated from an untrusted source and may contain harmful content. Windows components such as Microsoft Edge and Windows Explorer use MOTW to determine&amp;#x2026;</description><link>https://www.meziantou.net/understanding-and-managing-mark-of-the-web-in-dotnet.htm?utm_medium=social&amp;utm_source=syndication</link><guid isPermaLink="false">a0160630-c84c-4be1-8d24-0929e66a1715</guid><dc:creator>Gérald Barré</dc:creator><pubDate>Mon, 22 Dec 2025 12:00:00 GMT</pubDate><category>.NET</category><category>Security</category><category>Windows</category></item><item><title>Resolving Overload Ambiguity with Collection Expressions</title><description>OverloadResolutionPriority allows you to specify which method overload should be preferred by the compiler when multiple overloads are applicable. This can be useful in scenarios where you have multiple methods with types that can be implicitly converted to each other, and you want to control which overload is chosen. I&amp;#x27;ve found this feature particularly useful when having existing overloads that take&amp;#x2026;</description><link>https://www.meziantou.net/resolving-overload-ambiguity-with-collection-expressions.htm?utm_medium=social&amp;utm_source=syndication</link><guid isPermaLink="false">0d2234f0-6a3a-441c-8274-bcd607042a6e</guid><dc:creator>Gérald Barré</dc:creator><pubDate>Mon, 08 Dec 2025 12:00:00 GMT</pubDate><category>.NET</category></item><item><title>Creating a custom MSBuild SDK to reduce boilerplate in .NET projects</title><description>This blog post is part of The C# Advent Calendar 2025, a series of 50 posts about C#. Be sure to check out the rest of the blog posts in the calendar! Over the years, I&amp;#x27;ve relied on Meziantou.DotNet.CodingStandard, a NuGet package, to establish a consistent baseline across all my .NET projects. This approach includes style enforcement, essential analyzers, sensible build defaults, and additional tooling.&amp;#x2026;</description><link>https://www.meziantou.net/creating-a-custom-msbuild-sdk-to-reduce-boilerplate-in-dotnet-projects.htm?utm_medium=social&amp;utm_source=syndication</link><guid isPermaLink="false">deef76a0-3a05-4c81-8089-570c146d6894</guid><dc:creator>Gérald Barré</dc:creator><pubDate>Tue, 02 Dec 2025 12:00:00 GMT</pubDate><category>.NET</category></item></channel></rss>