feat(persistence)!: inline vs-solutionpersistence; rename SolutionModel → Solution; namespace cleanup#254
Conversation
…el → Solution; namespace cleanup Closes #248. Codefix follow-up tracked in #253.⚠️ Breaking change The vendored Microsoft.VisualStudio.SolutionPersistence fork (vendor/ submodule, fork-of-fork-of-Microsoft) is gone. Sources inlined into a new Fallout.Persistence.Solution project under src/Persistence/, owned outright by Fallout. The facade was renamed and rehoused alongside it in src/Persistence/Fallout.Solution/, and the long-standing rebrand-era namespace mismatch (Fallout.Common.ProjectModel) is fixed to match the assembly name (Fallout.Solutions, plural per BCL convention to avoid Fallout.Solution.Solution awkwardness). Package IDs: - Fallout.SolutionModel → Fallout.Solution - Fallout.VisualStudio.SolutionPersistence → Fallout.Persistence.Solution Namespaces: - Fallout.Common.ProjectModel → Fallout.Solutions - Microsoft.VisualStudio.SolutionPersistence.{Model,Serializer,Utilities,...} → Fallout.Persistence.Solution.{Model,Serializer,Utilities,...} Transition shim: The Nuke.Common shim (src/Shims/Nuke.Common/ShimMarker.cs) now mirrors BOTH Fallout.Common.* → Nuke.Common.* AND Fallout.Solutions.* → Nuke.Common.ProjectModel.*, so NUKE-era consumer code using `using Nuke.Common.ProjectModel; [Solution] readonly Solution Solution;` keeps compiling. Onion layering: This PR establishes src/Persistence/ as the home for persistence-ring code. Future persistence-related projects go under the same directory. Visibility narrowing deferred: Parser types remain public for this PR. The IVT decorations in Fallout.Persistence.Solution.csproj are future-intent. Per-type narrowing requires cascading CS0050 analysis — separate PR. Tests: - All 12 test assemblies pass (453 passed, 7 skipped, 0 failed). - StronglyTypedSolutionGenerator verified snapshot regenerated. - RealWorldSmokeTests expectations temporarily reverted to expect Fallout.Common.ProjectModel paths (the namespace migration codefix in Fallout.Migrate.Analyzers hasn't been updated for v11 yet — see #253). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
3bb1c7f to
5649c56
Compare
|
Rebased onto #256 (
So the consumer-compat matrix correctly identified exactly which downstream pattern is affected by this PR — and the resolution is the migration path. Local + full-suite tests green. |
Closes #248. Codefix follow-up tracked in #253.
Affected surface
Fallout.SolutionModel(package, project, assembly)Fallout.Solutionatsrc/Persistence/Fallout.Solution/Fallout.VisualStudio.SolutionPersistence(package, project, assembly)Fallout.Persistence.Solutionatsrc/Persistence/Fallout.Persistence.Solution/Fallout.Common.ProjectModel.*namespaceFallout.Solutions.*(plural per BCL convention)Microsoft.VisualStudio.SolutionPersistence.{Model,Serializer,Utilities,...}namespaceFallout.Persistence.Solution.{Model,Serializer,Utilities,...}vendor/vs-solutionpersistence/submoduleChrisonSimtian/vs-solutionpersistencerepoSummary
vendor/submodule pointing atChrisonSimtian/vs-solutionpersistence) is gone. 92 source files inlined into a newFallout.Persistence.Solutionproject undersrc/Persistence/, owned outright by Fallout. No more submodule + fork-rebase coordination.src/Persistence/is now the layered home for persistence-ring code. Future persistence-related projects go here.src/Fallout.SolutionModel/→src/Persistence/Fallout.Solution/. The rebrand-era namespace mismatch (Fallout.Common.ProjectModel) is fixed to match the assembly name —Fallout.Solutions(plural to avoidFallout.Solution.Solutionawkwardness).src/Shims/Nuke.Common/ShimMarker.csnow declares two mappings: the existingFallout.Common.*→Nuke.Common.*plus a newFallout.Solutions.*→Nuke.Common.ProjectModel.*. NUKE-era consumer code usingusing Nuke.Common.ProjectModel; [Solution] readonly Solution Solution;keeps compiling.What's NOT in this PR
publicfor now. The[InternalsVisibleTo]decorations onFallout.Persistence.Solution.csprojare future-intent. Per-type narrowing needs cascading CS0050 analysis — separate PR.Fallout.Migrate.Analyzers'sNuke→Falloutrewriter still producesFallout.Common.ProjectModel.*(which is now a dead namespace). Test expectations temporarily reverted to match today's behavior. Tracked in Update Nuke→Fallout codefix to map Common.ProjectModel → Solutions for v11 #253.ChrisonSimtian/vs-solutionpersistenceis unreferenced. Archive (or transfer toFallout-buildonce that's live) — tracked in chore(ci): drop Qodana #11.Test plan
dotnet build fallout.slnx— green, 0 warnings, 0 errorsdotnet test fallout.slnx --no-build— 453 passed, 7 skipped, 0 failed across 12 assembliesStronglyTypedSolutionGeneratorTest.Test#Solution.g.verified.cssnapshot regenerated (reflects new project list + namespace)Nuke.Common.ProjectModel.Solutionstill compiles against the new shim (manual / by Dennis)