Skip to content

Build: publish symbols and Source Link with the packages - #189

Open
phmatray wants to merge 1 commit into
devfrom
fix/publish-symbols
Open

Build: publish symbols and Source Link with the packages#189
phmatray wants to merge 1 commit into
devfrom
fix/publish-symbols

Conversation

@phmatray

@phmatray phmatray commented Sep 3, 2026

Copy link
Copy Markdown
Contributor

What

The published packages carry no debug information at all. Checked against what is actually on nuget.org:

Atypical.VirtualFileSystem 0.3.0
  lib/net6.0/Atypical.VirtualFileSystem.Core.dll   embedded PDB: no
  lib/net7.0/Atypical.VirtualFileSystem.Core.dll   embedded PDB: no
  lib/net8.0/Atypical.VirtualFileSystem.Core.dll   embedded PDB: no

No symbol package was ever pushed either. A consumer stepping into this library lands in decompiled IL with no route back to the source.

The fix

Add DotNet.ReproducibleBuilds to the two packable projects. It turns on Source Link, deterministic builds, and DebugType=embedded — the portable PDB then travels inside the assembly, so symbols and source stepping work with zero configuration on the consumer's side.

PublishRepositoryUrl / EmbedUntrackedSources go in Directory.Build.props alongside it.

What this deliberately does not do

It does not add IncludeSymbols + SymbolPackageFormat=snupkg. With embedded PDBs no separate .pdb is ever produced, so the snupkg gets packed empty and nuget.org rejects it:

400 The package does not contain any symbol (.pdb) files

That is not hypothetical — it is what failed the first release of PlayBlazor, and the same inert configuration is being removed from FastComponents in FastComponents#70. This repository gets the working half without the trap.

Verified

After the change, both packages carry an embedded PDB — MPDB blob present in Atypical.VirtualFileSystem.Core.dll and Atypical.VirtualFileSystem.GitHub.dll.

Noticed while here, not fixed

Atypical.VirtualFileSystem.GitHub has a ProjectReference to Atypical.VirtualFileSystem.Providers.Abstractions, which is not packable and is not packed by publish-to-nuget.yml. Should that package ever ship, it would reference an assembly no consumer can restore. It is not on nuget.org today, so nothing is broken right now — flagging it rather than widening this PR.

🤖 Generated with Claude Code

https://claude.ai/code/session_01D7hy3BpcmrBsEfqE9uGrNp

The published packages carry no debug information at all. Checked against nuget.org:
Atypical.VirtualFileSystem 0.3.0 has no embedded PDB in any of its three target frameworks,
and no symbol package was ever pushed alongside it. A consumer stepping into this library
gets decompiled IL and no way back to the source.

Adds DotNet.ReproducibleBuilds to the two packable projects, which turns on Source Link,
deterministic builds, and DebugType=embedded — the portable PDB then travels inside the
assembly, so symbols work with no symbol-server configuration on the consumer's side.

Deliberately NOT paired with IncludeSymbols/SymbolPackageFormat=snupkg: with embedded PDBs no
separate .pdb is ever produced, so a snupkg would be packed empty, and nuget.org rejects those
with "The package does not contain any symbol (.pdb) files". That trap is what this change
avoids repeating here.

Verified: after the change both packages carry an embedded PDB (MPDB blob present in
Atypical.VirtualFileSystem.Core.dll and Atypical.VirtualFileSystem.GitHub.dll).

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01D7hy3BpcmrBsEfqE9uGrNp
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