binlog-generation

Pass the /bl switch when running any MSBuild-based command. This is a non-negotiable requirement for all .NET builds.

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "binlog-generation" with this command: npx skills add dotnet/skills/dotnet-skills-binlog-generation

Generate Binary Logs

Pass the /bl switch when running any MSBuild-based command. This is a non-negotiable requirement for all .NET builds.

Commands That Require /bl

You MUST add the /bl:{} flag to:

  • dotnet build

  • dotnet test

  • dotnet pack

  • dotnet publish

  • dotnet restore

  • msbuild or msbuild.exe

  • Any other command that invokes MSBuild

Preferred: Use {} for Automatic Unique Names

Note: The {} placeholder requires MSBuild 17.8+ / .NET 8 SDK or later.

The {} placeholder in the binlog filename is replaced by MSBuild with a unique identifier, guaranteeing no two builds ever overwrite each other — without needing to track or check existing files.

Every invocation produces a distinct file automatically

dotnet build /bl:{} dotnet test /bl:{} dotnet build --configuration Release /bl:{}

PowerShell requires escaping the braces:

PowerShell: escape { } as {{ }}

dotnet build -bl:{{}} dotnet test -bl:{{}}

Why This Matters

  • Unique names prevent overwrites - You can always go back and analyze previous builds

  • Failure analysis - When a build fails, the binlog is already there for immediate analysis

  • Comparison - You can compare builds before and after changes

  • No re-running builds - You never need to re-run a failed build just to generate a binlog

Examples

✅ CORRECT - {} generates a unique name automatically (bash/cmd)

dotnet build /bl:{} dotnet test /bl:{}

✅ CORRECT - PowerShell escaping

dotnet build -bl:{{}} dotnet test -bl:{{}}

❌ WRONG - Missing /bl flag entirely

dotnet build dotnet test

❌ WRONG - No filename (overwrites the same msbuild.binlog every time)

dotnet build /bl dotnet build /bl

When a Specific Filename Is Required

If the binlog filename needs to be known upfront (e.g., for CI artifact upload), or if {} is not available in the installed MSBuild version, pick a name that won't collide with existing files:

  • Check for existing *.binlog files in the directory

  • Choose a name not already taken (e.g., by incrementing a counter from the highest existing number)

Example: directory contains 3.binlog — use 4.binlog

dotnet build /bl:4.binlog

Cleaning the Repository

When cleaning the repository with git clean , always exclude binlog files to preserve your build history:

✅ CORRECT - Exclude binlog files from cleaning

git clean -fdx -e "*.binlog"

❌ WRONG - This deletes binlog files (they're usually in .gitignore)

git clean -fdx

This is especially important when iterating on build fixes - you need the binlogs to analyze what changed between builds.

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

General

dotnet

No summary provided by upstream source.

Repository SourceNeeds Review
General

analyzing-dotnet-performance

No summary provided by upstream source.

Repository SourceNeeds Review
General

csharp-scripts

No summary provided by upstream source.

Repository SourceNeeds Review