binlogtool 1.0.33
dotnet tool install --global binlogtool --version 1.0.33
dotnet new tool-manifest
dotnet tool install --local binlogtool --version 1.0.33
#tool dotnet:?package=binlogtool&version=1.0.33
nuke :add-package binlogtool --version 1.0.33
binlogtool
Command-line utilities for MSBuild binary logs (*.binlog), from the
MSBuild Structured Log Viewer project.
Installation
dotnet tool install -g binlogtool
Update to the latest version:
dotnet tool update -g binlogtool
Alternatively, the binlogtoolexe
package contains the same tool as a standalone self-contained BinlogTool.exe
for Windows x64 that doesn't require the .NET SDK.
Commands
| Command | Description |
|---|---|
stats |
Break down what takes up space in a binlog (text and/or HTML report) |
search |
Search one or more binlogs using the viewer's search syntax |
redact |
Redact secrets from binlogs |
savefiles |
Save all files embedded in the binlog to disk |
reconstruct |
Reconstruct the source tree from the binlog |
savestrings |
Save the deduplicated string table from the binlog |
listtools |
List the tools and compilers invoked during the build |
listnuget |
List the NuGet packages referenced in the binlog |
listproperties |
List all property values seen during the build |
compilerinvocations |
List the compiler invocations in the binlog |
doublewrites |
Report files written more than once during the build |
dumprecords |
Low-level dump of the records contained in binlogs |
Run binlogtool <command> --help for the full help of any command.
stats
binlogtool stats input.binlog [--html [report.html]] [--text [report.txt]] [--strings]
Analyzes which record types, strings, name-value lists and blobs take up space in the binlog — think WinDirStat for binlog size. Buckets are sorted by total size and drill down into subcategories, with sample record texts drawn from the top of each bucket and from each size percentile (p90, p80, …) so you can see what the bytes actually are.
- With no options, prints a plain text report to stdout. The format is designed to be friendly to both humans and LLMs — point an AI agent at it and ask what makes the binlog large.
--html [path]writes a standalone self-contained HTML report with charts and interactive drill-down. The path is optional and defaults to<input>.stats.html.--text [path]writes the text report to a file instead of stdout. The path is optional and defaults to<input>.stats.txt.--stringsadditionally collects and includes the largest strings from the string table (uses more memory on large binlogs).
binlogtool stats msbuild.binlog
binlogtool stats msbuild.binlog --html --text
binlogtool stats msbuild.binlog --html report.html --strings
search
binlogtool search *.binlog <search string>
Searches one or more binlogs and prints matching nodes. The first argument can
be a file, a directory, or a wildcard pattern (subdirectories are searched
recursively); the rest of the command line is the search query. Supports the
same search syntax as the Structured Log Viewer,
e.g. $error, $task csc, under(), project() etc.
binlogtool search msbuild.binlog $error
binlogtool search C:\logs CS8600
redact
binlogtool redact --input:path -p:secret1 -p:secret2 [--recurse] [--in-place]
Redacts secrets from binlogs: explicitly provided strings (-p:) as well as
autodetected common credential patterns and usernames. Files embedded in the
binlog are processed too. Unless --in-place is specified, writes the result
to <input>.redacted.binlog.
--input— binlog file or directory to redact. Defaults to the current working directory.-p— a secret string to redact. Can be specified multiple times.--recurse— recurse into subdirectories when the input is a directory.--in-place— overwrite the input logs instead of writing new ones with a suffix.
savefiles
binlogtool savefiles input.binlog output_path
Saves all files embedded in the binlog (project files, imported targets, response files, source-generated files, etc.) into the output directory.
reconstruct
binlogtool reconstruct input.binlog output_path
Like savefiles, but reconstructs the original source tree layout from the
files embedded in the binlog.
savestrings
binlogtool savestrings input.binlog output.txt
Saves the deduplicated string table of the binlog into a text file, sorted.
Useful for diffing binlogs or inspecting what text data a binlog contains
(see also stats --strings for just the largest strings).
listtools
binlogtool listtools input.binlog
Prints the MSBuild version, the source commit (when available) and the set of tools, compilers and task assemblies invoked during the build.
listnuget
binlogtool listnuget input.binlog [output_path]
Lists the NuGet packages referenced in the binlog. Prints to stdout or writes to the optional output file.
listproperties
binlogtool listproperties input.binlog
Prints all Name=Value property combinations observed in project evaluations
and project builds, sorted by property name.
compilerinvocations
binlogtool compilerinvocations input.binlog [output_path]
Lists the compiler invocations (command lines) in the binlog. Prints to stdout or writes to the optional output file.
doublewrites
binlogtool doublewrites input.binlog [output_path]
Reports files that were written more than once during the build (a common source of race conditions and non-deterministic builds), together with the sources they were copied from.
dumprecords
binlogtool dumprecords [path] [--include-total] [--include-rollup] [--exclude-details]
Low-level dump of the raw records contained in binlogs, for debugging the
binlog format itself. path is a binlog file or directory and defaults to the
current working directory.
--include-total— include the total record count.--include-rollup— include a per-record-type rollup (count and average size).--exclude-details— exclude the per-record listing.
For a higher-level, size-oriented view see the stats command.
Links
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
This package has no dependencies.
| Version | Downloads | Last Updated |
|---|---|---|
| 1.0.33 | 5,941 | 8/4/2026 |
| 1.0.32 | 145 | 8/4/2026 |
| 1.0.31 | 6,813 | 7/14/2026 |
| 1.0.29 | 28,851 | 12/4/2025 |
| 1.0.28 | 853 | 12/2/2025 |
| 1.0.27 | 1,170 | 6/2/2025 |
| 1.0.26 | 410 | 5/13/2025 |
| 1.0.23 | 544 | 2/12/2025 |
| 1.0.22 | 35,248 | 11/4/2024 |
| 1.0.21 | 617 | 11/2/2024 |
| 1.0.20 | 1,592 | 10/27/2024 |
| 1.0.19 | 4,172 | 10/9/2024 |
| 1.0.18 | 4,785 | 9/19/2024 |
| 1.0.17 | 6,206 | 8/28/2024 |
| 1.0.16 | 5,487 | 7/26/2024 |
| 1.0.15 | 2,119 | 5/17/2024 |
| 1.0.14 | 734 | 4/18/2024 |
| 1.0.13 | 574 | 1/25/2024 |