Skip to content

build: migrate to slnx and central package management - #51

Open
bielu wants to merge 2 commits into
ByteBardOrg:vnextfrom
bielu:chore/slnx-central-package-management
Open

bielu wants to merge 2 commits into
ByteBardOrg:vnextfrom
bielu:chore/slnx-central-package-management

Conversation

@bielu

@bielu bielu commented Oct 17, 2026 •

Copy link
Copy Markdown
Contributor

Summary

  • Replaces AsyncAPI.sln with AsyncAPI.slnx, generated with dotnet sln migrate. It has the same 4 projects and solution items, and Directory.Packages.props is added to the solution items.
  • Adds Directory.Packages.props with ManagePackageVersionsCentrally=true and removes Version from every PackageReference in src/ and test/. No package versions change.
  • The examples/ projects opt out of CPM (ManagePackageVersionsCentrally=false). They aren't in the solution and use floating or prerelease versions of published packages (*-*), which CPM rejects unless floating versions are enabled.
  • CI now runs dotnet restore AsyncAPI.slnx explicitly. .slnx needs SDK 9.0.200+, and CI already installs 10.0.x.

Verification

  • dotnet build AsyncAPI.slnx succeeds with the same warnings as before.
  • dotnet test AsyncAPI.slnx: 318/318 pass on net8.0, net9.0 and net10.0.
  • dotnet pack src/ByteBard.AsyncAPI.Readers gives the same nuspec dependencies (JsonPointer.Net 5.3.1, YamlDotNet 13.0.1, System.Text.Json 9.0.1 on netstandard only).
  • The release workflows pack individual .csproj files, so they don't need changes.

Note: the example projects already fail to restore on vnext because they reference ByteBard.AsyncAPI.Readers instead of ByteBard.AsyncAPI.NET.Readers. This PR doesn't change that.

Vulnerable dependencies

With versions now in one place, this also bumps two packages flagged by dotnet list package --vulnerable --include-transitive:

Package From To Pulled in
Microsoft.SourceLink.GitHub 8.0.0 10.0.401 Microsoft.Build.Tasks.Git 8.0.0 (GHSA-23fw-v26w-5fgq, moderate)
Microsoft.NET.Test.Sdk 16.11.0 17.14.1 Newtonsoft.Json 9.0.1 (GHSA-5crp-9r3c-p9vr, high)

The scan now reports no vulnerable packages.

🤖 Generated with Claude Code

Summary by CodeRabbit

  • Chores
    • Updated solution and build configuration to use the new solution format.
    • Centralized package version management for the main projects and tests.
    • Kept example projects’ package versions independently configurable.

- Replace AsyncAPI.sln with AsyncAPI.slnx (generated via `dotnet sln migrate`).
- Add Directory.Packages.props and drop Version attributes from all
  src/test PackageReferences; versions are unchanged.
- Opt the example projects out of CPM, since they float on published
  prerelease packages.
- Point CI restore explicitly at AsyncAPI.slnx.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@bielu
bielu requested a review from VisualBean as a code owner October 17, 2026 17:42
@coderabbitai

coderabbitai Bot commented Oct 17, 2026 •

Copy link
Copy Markdown
Contributor

Review in Change Stack →

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration
  • Configuration used: defaults
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: 8f51a355-b110-42fd-96cc-9e42a8e82397
📥 Commits

Reviewing files that changed from the base of the PR and between a13c612 and 6aaac39.

📒 Files selected for processing: 11
  • .github/workflows/ci.yml
  • AsyncAPI.sln
  • AsyncAPI.slnx
  • Directory.Packages.props
  • examples/ByteBard.AsyncAPI.Readers.JsonExample/ByteBard.AsyncAPI.Readers.JsonExample.csproj
  • examples/ByteBard.AsyncAPI.Readers.YamlExample/ByteBard.AsyncAPI.Readers.YamlExample.csproj
  • examples/ByteBard.AsyncAPI.Writers.Example/ByteBard.AsyncAPI.Writers.Example.csproj
  • src/ByteBard.AsyncAPI.Bindings/ByteBard.AsyncAPI.Bindings.csproj
  • src/ByteBard.AsyncAPI.Readers/ByteBard.AsyncAPI.Readers.csproj
  • src/ByteBard.AsyncAPI/ByteBard.AsyncAPI.csproj
  • test/ByteBard.AsyncAPI.Tests/ByteBard.AsyncAPI.Tests.csproj
💤 Files with no reviewable changes: 1
  • AsyncAPI.sln

Included review availability: This review used your included allowance. Your plan provides up to 1 included review per hour; 0 remain after this review.

📝 Walkthrough

The repository now uses central package version management for source and test projects. Example projects opt out. The solution is defined in AsyncAPI.slnx, and the CI restore step targets that solution.

Changes: Build configuration

Layer / File(s) Summary
Central package version management
Directory.Packages.props, src/ByteBard.AsyncAPI*.csproj, test/ByteBard.AsyncAPI.Tests.csproj, examples/*/*.csproj
Package versions are defined centrally. Source and test project references omit local versions. Example projects disable central package version management.
Solution definition and CI restore
AsyncAPI.sln, AsyncAPI.slnx, .github/workflows/ci.yml
AsyncAPI.sln is replaced by AsyncAPI.slnx, which includes shared configuration files and the source and test projects. CI explicitly restores AsyncAPI.slnx.

Priority: ⬇️ Low

Estimated code review effort: 2 (Simple) | ~10 minutes

Change: Other

Merge Risk: ⚪ Minimal · up to 6aaac

The solution and package-management changes appear ready to merge after normal checks.

Pre-merge checks: Passed 5
Check name Status Explanation
Docstring Coverage Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff. Analyzed 0 functions across 0…
Linked Issues check Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check Passed Check skipped because no linked issues were found for this pull request.
Title check Passed The title clearly and concisely describes the two main changes: migration to SLNX and central package management.
Description check Passed The description is detailed and covers the migration, central package management, CI changes, verification results, package updates, and known limitations. It does not use the template headings for Ab…
Full details: Docstring Coverage

Explanation

No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff. Analyzed 0 functions across 0 files. (10 skipped: 10 unsupported.)

Full details: Description check

Explanation

The description is detailed and covers the migration, central package management, CI changes, verification results, package updates, and known limitations. It does not use the template headings for About the PR, Changelog, or Related Issues, and it does not identify a related issue, but the required change information is substantially present.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create a new PR
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

Microsoft.SourceLink.GitHub 8.0.0 pulled in Microsoft.Build.Tasks.Git
8.0.0 (GHSA-23fw-v26w-5fgq, moderate). Microsoft.NET.Test.Sdk 16.11.0
pulled in Newtonsoft.Json 9.0.1 (GHSA-5crp-9r3c-p9vr, high).
dotnet list package --vulnerable now reports none.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

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

None yet

Development

Successfully merging this pull request may close these issues.

1 participant