Build: stop packing an empty symbol package - #70
Open
phmatray wants to merge 1 commit into
Open
Conversation
DotNet.ReproducibleBuilds sets DebugType=embedded, so the portable PDB lives inside the assembly and no separate .pdb is ever emitted. `IncludeSymbols` + `SymbolPackageFormat=snupkg` have therefore been packing a shell containing nothing but a nuspec: the shipped FastComponents.1.0.0.snupkg is 3.5 KB across 4 files, not one of them a .pdb. It never broke a release only by accident. The artifact step uploads `*.nupkg`, and that pattern does not match `.snupkg`, so the empty symbol package never left the create_nuget runner. Anyone "fixing" that filter to carry symbols along would turn a silent no-op into a failed publish — nuget.org answers 400 "The package does not contain any symbol (.pdb) files" to an empty snupkg. That is exactly what happened on Atypical-Consulting/PlayBlazor, which inherited this configuration. Removes both properties rather than forcing DebugType=portable to feed a symbol server: embedded means consumers get symbols and Source Link with no symbol-server setup at all. Nothing is lost from what is already published — FastComponents.1.0.0's assembly carries its embedded PDB (MPDB blob verified in the pushed package). Verified: a Release build of src/FastComponents now produces the .nupkg alone. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01D7hy3BpcmrBsEfqE9uGrNp
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.
What
IncludeSymbols+SymbolPackageFormat=snupkgare inert here and have been since the dayDotNet.ReproducibleBuildswas added: it setsDebugType=embedded, so the portable PDB lives inside the assembly and no separate.pdbis ever produced.The published
FastComponents.1.0.0.snupkgis a 3.5 KB shell — 4 files, none of them a.pdb:Why it never broke a release
By accident. The artifact step uploads
${{ env.NuGetDirectory }}/*.nupkg, and*.nupkgdoes not match.snupkg— so the empty symbol package never left thecreate_nugetrunner anddeploynever tried to push it.That makes this a trap: anyone tightening that filter to carry symbols along turns a silent no-op into a failed publish. nuget.org answers
400 The package does not contain any symbol (.pdb) files. That is exactly what happened on PlayBlazor, which inherited this configuration — the.nupkgpublished, thendeploywent red on the symbol push.The fix
Remove both properties rather than force
DebugType=portableto feed a symbol server. Embedded is the better trade for a component library: consumers get symbols and Source Link with no symbol-server configuration at all.Nothing is lost from what is already on nuget.org —
FastComponents.1.0.0's assembly carries its embedded PDB (MPDBblob verified inside the pushed package).Verified
A Release build of
src/FastComponentsnow produces the.nupkgalone, no empty.snupkgbeside it.Not affected
VirtualFileSystemdeclares neither property, so it never produced a symbol package and has nothing to fix here.🤖 Generated with Claude Code
https://claude.ai/code/session_01D7hy3BpcmrBsEfqE9uGrNp