Skip to content

build: migrate solution files from .sln to .slnx - #4989

Open
StefanOssendorf wants to merge 4 commits into
mainfrom
dev/upgrade-to-slnx
Open

StefanOssendorf wants to merge 4 commits into
mainfrom
dev/upgrade-to-slnx

Conversation

@StefanOssendorf

Copy link
Copy Markdown
Contributor

Summary

Move every solution in the repo from the old .sln format to the XML-based .slnx format. The .slnx files are much smaller and diff and merge cleanly. The SDK pinned in Source/global.json (.NET 11) supports them natively.

Changes

Framework solutions (Source/)

  • Replaced the six .sln files with .slnx, keeping the same project sets: Csla.Analyzers, csla.benchmarks, csla.build, csla.maui.build, csla.maui.test and csla.test.

Sample solutions (Samples/)

  • Converted all 21 sample .sln files with dotnet sln migrate. Each .slnx lists the same projects as the .sln it replaces.
  • Samples/AvaloniaExample already used .slnx.

References

  • CI workflows (ci.yaml, release.yaml, release-maui.yaml) now build, test and pack the .slnx files. The MAUI change filter now watches csla.maui.test.slnx.
  • Updated CLAUDE.md, docs/Csla-Testing.md, docs/dev/use-csla-in-debugger.md, docs/dev/Create-a-CSLA-.NET-release.md and the sample readmes.
  • Removed *.sln merge=union from .gitattributes. No .sln files remain, and a union merge on XML can produce invalid .slnx files.

Unchanged

  • The template.json files under Support/Templates still point at the templates' own .sln files. Those are separate from the solutions migrated here.

Testing

  • dotnet sln list succeeds for all 27 .slnx files. For each converted sample, the project list matches the original .sln.
  • dotnet build Source/csla.test.slnx succeeds (44 projects, 0 errors).
  • dotnet build Source/csla.build.slnx succeeds (22 projects, 0 errors).
  • dotnet build Samples/CslaFastStart/CslaFastStart.slnx succeeds.
  • CI is green (build, tests, AOT smoke test).
  • The MAUI build runs. This PR touches csla.maui.test.slnx, so it should trigger.

@StefanOssendorf
StefanOssendorf requested a review from a team as a code owner November 3, 2026 21:04
@@ -0,0 +1,116 @@
<Solution>
<Configurations>
<BuildType Name="Ad-Hoc" />

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This seems like a good opportunity to get rid of all those old/obsolete build types.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That's right. Should we only keep Debug and Release? TBH these settings are voodoo for me xD

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think those are only ones that matter.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟢 Approval recommended

The migration to .slnx solutions has no active review issues.

No open issues 🎉

What changed in this PR

Migrates CSLA .NET’s framework and sample solutions to the XML-based .slnx format, reducing solution-file complexity and making changes easier to review and merge.

Changes:

  • Converts six framework solutions and 21 sample solutions, retaining project lists and configuration mappings.
  • Updates CI, release workflows, and documentation to reference .slnx files.
  • Removes the legacy .sln union-merge rule from .gitattributes.
File Description
Source/​csla.test.slnx Adds XML solution for framework and tests.
Source/​csla.maui.test.slnx Adds XML MAUI test solution.
Source/​csla.maui.test.sln Removes legacy MAUI test solution.
Source/​csla.maui.build.slnx Adds XML MAUI packaging solution.
Source/​csla.build.slnx Adds XML framework packaging solution.
Source/​csla.benchmarks.slnx Adds XML benchmark solution.
Source/​csla.benchmarks.sln Removes legacy benchmark solution.
Source/​Csla.Analyzers.slnx Adds XML analyzer solution.
Source/​Csla.Analyzers.sln Removes legacy analyzer solution.
Samples/​WpfExample/​WpfExample.slnx Adds XML WPF sample solution.
Samples/​WpfExample/​WpfExample.sln Removes legacy WPF sample solution.
Samples/​WinSortFilter/​WinSortFilter.slnx Adds XML sorting/filtering sample solution.
Samples/​WinSortFilter/​WinSortFilter.sln Removes legacy sorting/filtering solution.
Samples/​WinFormsExample/​WinFormsExample.slnx Adds XML WinForms sample solution.
Samples/​WinFormsExample/​WinFormsExample.sln Removes legacy WinForms sample solution.
Samples/​SimpleNTier/​SimpleNTier.slnx Converts tiered sample with configuration mappings.
Samples/​SimpleNTier/​SimpleNTier.sln Removes legacy tiered sample solution.
Samples/​RuleTutorial/​RuleTutorial.slnx Converts tutorial folders, projects, and configurations.
Samples/​RoutedDataPortal/​RoutedDataPortal.slnx Converts routed portal solution, including Docker Compose.
Samples/​RoutedDataPortal/​RoutedDataPortal.sln Removes legacy routed portal solution.
Samples/​RootChildGrandchildWinFormTest/​RootChildGrandchildWinFormTest.slnx Adds XML object-hierarchy sample solution.
Samples/​RootChildGrandchildWinFormTest/​RootChildGrandchildWinFormTest.sln Removes legacy object-hierarchy solution.
Samples/​RazorPagesExample/​RazorPagesExample.slnx Adds XML Razor Pages sample solution.
Samples/​RazorPagesExample/​RazorPagesExample.sln Removes legacy Razor Pages solution.
Samples/​RabbitMqExample/​RabbitMqExample.slnx Adds XML RabbitMQ sample solution.
Samples/​RabbitMqExample/​RabbitMqExample.sln Removes legacy RabbitMQ sample solution.
Samples/​PropertyStatus/​PropertyStatus.slnx Converts property-status solution and Testing mapping.
Samples/​PropertyStatus/​PropertyStatus.sln Removes legacy property-status solution.
Samples/​ProjectTracker/​ProjectTracker.slnx Converts ProjectTracker folders and configurations.
Samples/​ProjectTracker/​ProjectTracker.sln Removes legacy ProjectTracker solution.
Samples/​MvcExample/​MvcExample.slnx Adds XML MVC sample solution.
Samples/​MvcExample/​MvcExample.sln Removes legacy MVC sample solution.
Samples/​MauiExample/​MauiExample.slnx Converts MAUI sample with deployment enabled.
Samples/​MauiExample/​MauiExample.sln Removes legacy MAUI sample solution.
Samples/​DataPortalInstrumentation/​DataPortalInstrumentation.slnx Adds XML instrumentation sample solution.
Samples/​DataPortalInstrumentation/​DataPortalInstrumentation.sln Removes legacy instrumentation solution.
Samples/​DataPortalFactoryExample/​DataPortalFactoryExample.slnx Adds XML portal-factory sample solution.
Samples/​DataPortalFactoryExample/​DataPortalFactoryExample.sln Removes legacy portal-factory solution.
Samples/​DataPortalCacheExample/​DataPortalCacheExample.slnx Adds XML portal-cache sample solution.
Samples/​DataPortalCacheExample/​DataPortalCacheExample.sln Removes legacy portal-cache solution.
Samples/​CustomErrorHandling/​readme.md Updates sample build command.
Samples/​CustomErrorHandling/​CustomErrorHandling.slnx Converts error-handling sample and configurations.
Samples/​CustomErrorHandling/​CustomErrorHandling.sln Removes legacy error-handling solution.
Samples/​CustomActivator/​CustomActivator.slnx Adds XML custom-activator solution.
Samples/​CustomActivator/​CustomActivator.sln Removes legacy custom-activator solution.
Samples/​CslaFastStart/​CslaFastStart.slnx Adds XML FastStart sample solution.
Samples/​CslaFastStart/​CslaFastStart.sln Removes legacy FastStart solution.
Samples/​BusinessRuleDemo/​BusinessRuleDemo.slnx Converts rules demo and Testing mapping.
Samples/​BusinessRuleDemo/​BusinessRuleDemo.sln Removes legacy rules-demo solution.
Samples/​BlazorExample/​BlazorExample.slnx Adds XML Blazor sample solution.
Samples/​BlazorExample/​BlazorExample.sln Removes legacy Blazor sample solution.
Samples/​AvaloniaExample/​README.md Updates framework packaging reference.
docs/​dev/​use-csla-in-debugger.md Updates local-package solution instructions.
docs/​dev/​Create-a-CSLA-.NET-release.md Updates release solution references.
docs/​Csla-Testing.md Updates packaging and test solution references.
CLAUDE.md Updates commands, solution table, and MAUI filter documentation.
.github/​workflows/​release.yaml Packs the XML framework solution.
.github/​workflows/​release-maui.yaml Packs the XML MAUI solution.
.github/​workflows/​ci.yaml Updates build/test commands and MAUI change filter.
.gitattributes Removes the legacy .sln union-merge rule.

Review effort: Balanced

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: In Progress

Development

Successfully merging this pull request may close these issues.

3 participants