Currently, I package the release builds with Nuget for the official builds to nuget.org, but I package the debug builds with Nuget for the symbol source pushes to symbolsour
It's been 8 years since OP's post, so I'll give it a crack with what's used nowadays.
There are 2 ways of "stepping into" a NuGet package:
1. Distribution of PDBs
.symbols.nupkg
symbol packages are considered as legacy and have been replaced with .snupkg
packages that get published to Symbol Server. It’s supported by most vendors with Azure DevOps being the biggest outsider where the feature request is still "under review" (thank you @alv for the link).
Here are the official instructions. Simply add these two lines to the csproj file:
true
snupkg
On the consumer side, make sure that your IDE is configured for the NuGet.org (or Azure, etc.) Symbol Server to allow stepping into package code when debugging.
2. Source Link.Linking the actual code
In some cases, the PDBs may hide some specifics of the source code due to MSIL/JIT optimisation. So there is a way of ”Stepping Into” the actual source of your NuGet while debugging. It’s called Source Link from the .NET Foundation – ”a language- and source-control agnostic system for providing source debugging experiences for binaries“.
It’s supported by Visual Studio 15.3+ and all the major vendors (also supports private repos).
It’s trivial to setup (official docs) – just add a development dependency to the project file (depends on the type of your repo) along with some flags:
true
true
Check out more on this subject in "5 steps to better NuGet package".