Repository navigation
build: migrate solution files from .sln to .slnx - #4989
Open
StefanOssendorf wants to merge 4 commits into
Open
StefanOssendorf wants to merge 4 commits into
StefanOssendorf wants to merge 4 commits into
Conversation
rockfordlhotka
requested changes
Nov 4, 2026
| @@ -0,0 +1,116 @@ | |||
| <Solution> | |||
| <Configurations> | |||
| <BuildType Name="Ad-Hoc" /> | |||
Member
There was a problem hiding this comment.
This seems like a good opportunity to get rid of all those old/obsolete build types.
Contributor
Author
There was a problem hiding this comment.
That's right. Should we only keep Debug and Release? TBH these settings are voodoo for me xD
Member
There was a problem hiding this comment.
I think those are only ones that matter.
Contributor
There was a problem hiding this comment.
🟢 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
.slnxfiles. - Removes the legacy
.slnunion-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
5 of 6 tasks
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Move every solution in the repo from the old
.slnformat to the XML-based.slnxformat. The.slnxfiles are much smaller and diff and merge cleanly. The SDK pinned inSource/global.json(.NET 11) supports them natively.Changes
Framework solutions (
Source/).slnfiles with.slnx, keeping the same project sets:Csla.Analyzers,csla.benchmarks,csla.build,csla.maui.build,csla.maui.testandcsla.test.Sample solutions (
Samples/).slnfiles withdotnet sln migrate. Each.slnxlists the same projects as the.slnit replaces.Samples/AvaloniaExamplealready used.slnx.References
ci.yaml,release.yaml,release-maui.yaml) now build, test and pack the.slnxfiles. The MAUI change filter now watchescsla.maui.test.slnx.CLAUDE.md,docs/Csla-Testing.md,docs/dev/use-csla-in-debugger.md,docs/dev/Create-a-CSLA-.NET-release.mdand the sample readmes.*.sln merge=unionfrom.gitattributes. No.slnfiles remain, and a union merge on XML can produce invalid.slnxfiles.Unchanged
template.jsonfiles underSupport/Templatesstill point at the templates' own.slnfiles. Those are separate from the solutions migrated here.Testing
dotnet sln listsucceeds for all 27.slnxfiles. For each converted sample, the project list matches the original.sln.dotnet build Source/csla.test.slnxsucceeds (44 projects, 0 errors).dotnet build Source/csla.build.slnxsucceeds (22 projects, 0 errors).dotnet build Samples/CslaFastStart/CslaFastStart.slnxsucceeds.csla.maui.test.slnx, so it should trigger.