fix(packaging): ship README.md with every Fallout.* nupkg#207
Merged
Conversation
Today's `dotnet pack` output emits a warning for every Fallout.* package: > The package Fallout.<X> is missing a readme. Go to https://aka.ms/nuget/authoring-best-practices/readme to learn why package readmes are important. And nuget.org's package landing pages show the generic "No README" placeholder instead of the project description / install one-liners / docs link. The plumbing was already half-wired up in `Directory.Build.props` but commented out, tied to a separate TODO about the missing `PackageIcon`. This PR decouples them and adds smart per-project / repo-root README selection: - `<PackageReadmeFile>README.md</PackageReadmeFile>` enabled unconditionally. - New ItemGroups in `Directory.Build.props` pick a README per package: - If `src/Fallout.X/README.md` exists → pack THAT one (per-package content wins for nuget.org's landing page). - Otherwise → pack the repo-root `README.md`. - `Fallout.Migrate.Analyzers.csproj`: removed its now-redundant explicit `<None Include="README.md" Pack="true" PackagePath="\" />` line; the Directory.Build.props auto-include handles it. - Test projects have `IsPackable=False` so the items don't matter for them. - `PackageIcon` stays commented (still blocked on a 256×256 PNG export of `.assets/fallout-logo.svg` — separate TODO). ## Verification Packed three representative projects locally; each gets the right README: | Project | Per-project README? | Pack result | |---|---|---| | `Fallout.Common` | no | Root README packed (Fallout logo + intro). Warning gone. | | `Fallout.Migrate.Analyzers` | yes | Its own README packed (analyzer-specific landing page). Warning gone. | | `src/Shims/Nuke.Common` | yes | Its own README packed (shim-specific landing page). Warning gone. | `unzip -l <pkg>.nupkg` confirms exactly one `README.md` at the root of each package; `unzip -p <pkg>.nupkg <pkg>.nuspec` confirms `<readme>README.md</readme>`. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
1 task
ChrisonSimtian
added a commit
that referenced
this pull request
May 27, 2026
Picks up four patches shipped overnight, notably: - #212: AES-GCM v2 secret format (per-secret salt+nonce, 600K PBKDF2) - #211: drop unused Build() + surface dotnet-tools.json in IDE config group - #209: manifest flip + ownership-gotcha doc - #207: ship README.md with every Fallout.* nupkg Verified locally: `dotnet tool restore` pulls 10.3.45 cleanly, `dotnet fallout --help` runs through the new in-tool runner without issue. Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
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
Today's
dotnet packoutput warns on every Fallout.* package:And nuget.org's package landing pages show the generic "No README" placeholder instead of the Fallout intro / install command / docs link. Surfaced when Chris went to upload the locally-packed
Fallout.Cli.*.nupkgto reserve the new ID (#206).What this PR does
The plumbing was already half-wired up in
Directory.Build.propsbut commented out, tied to a separate TODO about the missingPackageIcon. Decoupled and made smarter:<PackageReadmeFile>README.md</PackageReadmeFile>enabled unconditionally.Directory.Build.propspick the right README per package:src/Fallout.X/README.mdexists → pack that one (per-package content wins on the nuget.org landing page).README.md.Fallout.Migrate.Analyzers.csproj: removed its now-redundant explicit<None Include=\"README.md\" Pack=\"true\" PackagePath=\"\\\" />; the Directory.Build.props auto-include handles it.IsPackable=False) aren't affected.PackageIconstays commented (still blocked on a 256×256 PNG export of.assets/fallout-logo.svg).Verification
Packed three representative projects locally; each gets the right README:
Fallout.CommonFallout.Migrate.Analyzerssrc/Shims/Nuke.Commonunzip -l <pkg>.nupkgconfirms exactly oneREADME.mdat the root of each package;unzip -p <pkg>.nupkg <pkg>.nuspecconfirms<readme>README.md</readme>.Test plan
ubuntu-latestgoes green.Fallout.Cli.*.nupkgfor manual upload.Fallout.*packages publish with readmes attached. nuget.org pages show the landing content instead of the placeholder.