Skip to content

chore: migrate solution to .slnx - #296

Merged
Aaronontheweb merged 3 commits into
devfrom
chore/migrate-to-slnx
Oct 28, 2026
Merged

Aaronontheweb merged 3 commits into
devfrom
chore/migrate-to-slnx

Conversation

@Aaronontheweb

Copy link
Copy Markdown
Member

Converts DrawTogether.sln to the XML-based .slnx format via dotnet sln migrate and removes the legacy .sln.

Why remove the .sln and not keep both? CI runs dotnet build / dotnet test with no solution argument. With two solution files in the root, MSBuild fails with MSB1011: Specify which project or solution file to use. Verified locally — the deletion is required for the migration to be a no-op for CI.

Verified

  • dotnet build -c Release (bare, no arg) → 0 errors, resolves DrawTogether.slnx
  • All 8 projects present in the .slnx (dotnet sln DrawTogether.slnx list)
  • DrawTogether.Tests → 8/8 passing

Notes

  • No workflow, script, or incrementalist config references the .sln path, so nothing else needs updating.
  • Sorting of items inside generated solution folders is preserved as emitted by the SDK.

Run 'dotnet sln migrate' to convert DrawTogether.sln to the XML-based
.slnx format, then remove the legacy .sln. Both files cannot coexist:
a bare 'dotnet build' in the repo root fails with MSB1011 when more than
one solution file is present, and CI invokes 'dotnet build' with no
arguments.

Verified: dotnet build -c Release (0 errors), all 8 projects present in
the .slnx, unit tests pass 8/8.
@Aaronontheweb
Aaronontheweb enabled auto-merge (squash) October 28, 2026 22:14
The .slnx migration broke Test-windows-latest: Incrementalist 1.0.0
auto-discovers the solution, then hands it to Roslyn MSBuildWorkspace,
which parses it with the legacy Microsoft.Build SolutionFile reader and
throws 'InvalidProjectFileException: No file format header found.
DrawTogether.slnx'.

Upgrade incrementalist.cmd 1.0.0 -> 1.2.2. Its default StaticGraph
engine reads .slnx correctly (verified locally: all 8 projects in the
graph). Also pass -s DrawTogether.slnx explicitly, because 1.2.2's
default solution glob is '*.sln' and would otherwise match nothing and
exit 0 without testing anything - a silent no-op that loses Windows
unit-test coverage.

Verified: dotnet incrementalist run -s DrawTogether.slnx --dry lists
all 8 projects.
@Aaronontheweb
Aaronontheweb merged commit 0571e31 into dev Oct 28, 2026
4 of 6 checks passed
@Aaronontheweb
Aaronontheweb deleted the chore/migrate-to-slnx branch October 28, 2026 23:15
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant