Skip to content

build: adopt NuGet Central Package Management#94

Merged
Reefact merged 1 commit into
mainfrom
claude/fuzzing-openssf-scorecard-uneno2
Jul 11, 2026
Merged

build: adopt NuGet Central Package Management#94
Reefact merged 1 commit into
mainfrom
claude/fuzzing-openssf-scorecard-uneno2

Conversation

@Reefact

@Reefact Reefact commented Jul 11, 2026

Copy link
Copy Markdown
Owner

Summary

Adopt NuGet Central Package Management (CPM): every package version now lives in a single Directory.Packages.props. Beyond version consistency across projects, this makes the dotnet restore steps reproducible, which lifts OpenSSF Scorecard's Pinned-Dependencies check — its two dotnet restore commands (in ci.yml and release.yml) were previously flagged as unpinned nugetCommand dependencies, capping the check at 7/10.

Type of change

  • Bug fix
  • New feature
  • Breaking change
  • Refactoring
  • Analyzer / diagnostic change
  • Tests
  • Documentation
  • Build / CI / tooling

Changes

  • Added Directory.Packages.props (ManagePackageVersionsCentrally=true) with a <PackageVersion> for every package used in the solution.
  • Removed the inline Version= from every <PackageReference> across the solution projects.
  • FirstClassErrors.Analyzers: kept the Roslyn load-contract floor via VersionOverride="$(RoslynFloorVersion)", so it stays property-driven and independent of the newer central Microsoft.CodeAnalysis.CSharp version the analyzer tests consume.
  • tools/floor-check/FloorCheck.csproj: opted out of CPM (ManagePackageVersionsCentrally=false) — it consumes the FirstClassErrors package at a dynamic $(FloorCheckVersion) and is built in isolation, outside the solution.

Testing

  • dotnet build FirstClassErrors.sln (Release, with the CI warning ratchet — 0 warnings)
  • dotnet test FirstClassErrors.sln (Release — 598 passed, 0 failed)
  • Analyzer tests pass (FirstClassErrors.Analyzers.UnitTestsRoslynFloorTests confirms the analyzer floor is unchanged)

Documentation

  • Public API / error documentation updated
  • README / doc/ updated
  • French translation (doc/README.fr.md) updated if user-facing behavior changed
  • No documentation change required — Directory.Packages.props carries an explanatory header comment; no user-facing behavior changes.

Related issues

None.

🤖 Generated with Claude Code

https://claude.ai/code/session_014W1zrcBNy3jEs8ngAQKwZg


Generated by Claude Code

Move every PackageReference version into a single Directory.Packages.props
(ManagePackageVersionsCentrally=true). This makes the `dotnet restore` steps in
the CI and release workflows reproducible, which is what OpenSSF Scorecard's
Pinned-Dependencies check credits: the two previously unpinned nugetCommand
dependencies (the ci.yml and release.yml restores) now count as pinned, lifting
that check from 7 toward 10.

Two deliberate exceptions preserve existing behaviour:
- FirstClassErrors.Analyzers keeps its Roslyn load-contract floor via
  VersionOverride="$(RoslynFloorVersion)", independent of the newer central
  Microsoft.CodeAnalysis.CSharp version the analyzer tests use.
- tools/floor-check/FloorCheck.csproj opts out of CPM: it consumes the
  FirstClassErrors package at a dynamic $(FloorCheckVersion), built in isolation
  outside the solution.

Co-Authored-By: Claude Opus 4.8 <[email protected]>
Claude-Session: https://claude.ai/code/session_014W1zrcBNy3jEs8ngAQKwZg
@Reefact Reefact merged commit 5179551 into main Jul 11, 2026
11 checks passed
@Reefact Reefact deleted the claude/fuzzing-openssf-scorecard-uneno2 branch July 11, 2026 08:01
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.

2 participants