From dotnet-msbuild
Replays MSBuild .binlog files to text logs and analyzes with grep for diagnosing .NET build failures, cascading errors, target execution, and issues like CS0246 or MSB4019.
npx claudepluginhub dotnet/skills --plugin dotnet-msbuildThis skill uses the workspace's default tool permissions.
Use MSBuild's built-in **binlog replay** to convert binary logs into searchable text logs, then analyze with standard tools (`grep`, `cat`, `head`, `tail`, `find`).
Provides Ktor server patterns for routing DSL, plugins (auth, CORS, serialization), Koin DI, WebSockets, services, and testApplication testing.
Conducts multi-source web research with firecrawl and exa MCPs: searches, scrapes pages, synthesizes cited reports. For deep dives, competitive analysis, tech evaluations, or due diligence.
Provides demand forecasting, safety stock optimization, replenishment planning, and promotional lift estimation for multi-location retailers managing 300-800 SKUs.
Use MSBuild's built-in binlog replay to convert binary logs into searchable text logs, then analyze with standard tools (grep, cat, head, tail, find).
Replay produces multiple focused log files in one pass:
dotnet msbuild build.binlog -noconlog \
-fl -flp:v=diag;logfile=full.log;performancesummary \
-fl1 -flp1:errorsonly;logfile=errors.log \
-fl2 -flp2:warningsonly;logfile=warnings.log
PowerShell note: Use
-flp:"v=diag;logfile=full.log;performancesummary"(quoted semicolons).
cat errors.log
This gives all errors with file paths, line numbers, error codes, and project context.
# Find all occurrences of a specific error code with surrounding context
grep -n -B2 -A2 "CS0246" full.log
# Find which projects failed to compile
grep -i "CoreCompile.*FAILED\|Build FAILED\|error MSB" full.log
# Find project build order and results
grep "done building project\|Building with" full.log | head -50
Projects that never reached CoreCompile failed because a dependency failed, not their own code:
# List all projects that ran CoreCompile
grep 'Target "CoreCompile"' full.log | grep -oP 'project "[^"]*"'
# Compare against projects that had errors to identify cascading failures
grep "project.*FAILED" full.log
# Read the .csproj of the failing project
cat path/to/Services/Services.csproj
# Check PackageReference and ProjectReference entries
grep -n "PackageReference\|ProjectReference" path/to/Services/Services.csproj
Write your diagnosis as soon as you have enough information. Do not over-investigate.
# The PerformanceSummary is at the end of full.log
tail -100 full.log # shows target/task timing summary
grep "Target Performance Summary\|Task Performance Summary" -A 50 full.log
# Check evaluation properties
grep -i "OutputPath\|IntermediateOutputPath\|TargetFramework" full.log | head -30
# Check item groups
grep "PackageReference\|ProjectReference" full.log | head -30
| Command | Purpose |
|---|---|
dotnet msbuild X.binlog -noconlog -fl -flp:v=diag;logfile=full.log;performancesummary | Full diagnostic log with perf summary |
dotnet msbuild X.binlog -noconlog -fl -flp:errorsonly;logfile=errors.log | Errors only |
dotnet msbuild X.binlog -noconlog -fl -flp:warningsonly;logfile=warnings.log | Warnings only |
grep -n "PATTERN" full.log | Search for patterns in the replayed log |
dotnet msbuild -pp:preprocessed.xml Proj.csproj | Preprocess — inline all imports into one file |
dotnet build /bl:build.binlog