Skip to main content

check-bin-obj-clash

Identify MSBuild evaluations that write to the same output or intermediate path and report the minimal path-isolation fix.

Source facts

Repository
visionarycoder/vc.Ifx
Last source activity
September 10, 2026 at 04:35
Detected SKILL.md language
English
Stars
0
Forks
0

Install options

The review-first prompt is selected by default. You can switch to a direct command or download a local copy.

Review the source files

Read SKILL.md and any companion files shown by SkillsMP before deciding whether to install.

Showing SKILL.md

SKILL.md
Source instructions · Read-only preview
name
check-bin-obj-clash
title
Detecting OutputPath and IntermediateOutputPath Clashes
description
Identify MSBuild evaluations that write to the same output or intermediate path and report the minimal path-isolation fix.
doc_type
skill
status
active
last_updated
2026-07-29T00:00:00.000Z
target_audience
ai
complexity
medium
estimated_tokens
1520
prerequisites
["binlog-generation","ste-agent-writing-standard","terminology-dictionary"]
related_skills
["msbuild-antipatterns","directory-build-organization"]
appliesTo
**/*.csproj
tags
["msbuild","diagnostics","build"]
# Detecting OutputPath and IntermediateOutputPath Clashes Agent finds project evaluations that share the same `OutputPath` or `IntermediateOutputPath` and recommends the narrowest isolation fix. ## When to Use Agent uses this skill when: - Restore reports file-create collisions - Parallel builds fail intermittently with file-in-use or overwrite errors - Multi-target or RID builds produce missing or overwritten outputs ## When Not to Use Agent does not use this skill when: - File locking is unrelated to MSBuild output paths - Build scope is one project and one target framework with isolated paths - Build system is not MSBuild based ## Required Inputs | Input | Required | Notes | |---|---|---| | Binlog | Yes | Existing `.binlog` from the failing build | | Project scope | Yes | Project or solution represented by the binlog | | Replay log | No | Fallback only when MCP is unavailable | ## Diagnostic Workflow | Step | Agent action | Test | Pass | |---|---|---|---| | 1. Capture evidence | Agent opens a binlog or replay log | Agent confirms the file is readable | Evidence source is available | | 2. Extract evaluations | Agent records project path, evaluation ID, global properties, `OutputPath`, and `IntermediateOutputPath` | Agent builds one record per evaluation | Evaluation table is complete enough to compare paths | | 3. Normalize paths | Agent resolves every candidate path to an absolute normalized value | Agent groups matching absolute paths | Equivalent paths collapse into one group | | 4. Apply exclusions | Agent excludes `BuildProjectReferences=false` metadata queries and excludes restore-phase `OutputPath` checks while keeping restore-phase `IntermediateOutputPath` checks | Agent marks excluded rows explicitly | False-positive groups disappear | | 5. Report clash groups | Agent lists each colliding group with differing global properties | Agent compares group size and property diffs | Each clash has evidence and a minimal fix | | 6. Verify | Agent rebuilds after the fix | Agent checks for vanished collision errors | Original file collision does not recur | ## Decision Matrix | Detected pattern | Agent fix | |---|---| | Multi-target output path lacks `$(TargetFramework)` | Add `$(TargetFramework)` or enable `AppendTargetFrameworkToOutputPath` and `AppendTargetFrameworkToIntermediateOutputPath` | | Shared intermediate directory across projects | Give each project a unique `BaseIntermediateOutputPath` | | RID builds share one output path | Add `$(RuntimeIdentifier)` or enable `AppendRuntimeIdentifierToOutputPath` | | Same project builds from multiple solution contexts | Separate the invocations or isolate configuration and platform values | | Path-neutral global property forks create duplicate instances | Remove the property, condition it, or use `RemoveGlobalProperties` on `ProjectReference` | | Cross-project publish uses nested `<MSBuild>` with extra properties | Consume producer outputs instead of forking publish inside the consumer | ## Evidence Fields | Field | Agent records | |---|---| | ProjectPath | Exact project file path | | EvaluationID | Distinct evaluation identifier | | GlobalProperties | Exact property set, not inferred defaults | | OutputPath | Absolute normalized output path | | IntermediateOutputPath | Absolute normalized intermediate path | | Restore marker | Presence or absence of `MSBuildRestoreSessionId` | ## Validation | Check | Test | Pass | |---|---|---| | Evidence quality | Agent reports exact evaluation rows and property diffs | Each clash is traceable to raw evidence | | False-positive control | Agent applies exclusion rules consistently | Metadata-query rows do not drive findings | | Fix precision | Agent chooses the smallest path-isolation change | Unrelated build structure stays intact | | Rebuild proof | Agent reruns a clean or no-incremental build | Collision errors disappear | ## Common Pitfalls | Pitfall | Agent correction | |---|---| | Agent compares raw relative paths only | Agent normalizes to absolute paths first | | Agent treats restore and build evaluations the same | Agent uses restore-specific rules | | Agent infers missing global properties | Agent reports only observed property values | | Agent restructures the repo before trying append flags or unique obj paths | Agent starts with the smallest isolation fix |
View on GitHub