I used the instructions at NuGet.org to create symbols packages for each of my open-source DLLs. For example, I used nuget pack -Version 2.4.3 -symbols Core\Loyc.Essentials.nuspec
to create Loyc.Essentials.2.4.3.nupkg
and Loyc.Essentials.2.4.3.symbols.nupkg
.
Renaming the .nupkg to .zip, I verified that the .symbols.nupkg
package contains the expected .dll, .pdb and .xml files in lib\net45
and elsewhere, along with complete source code in a src
folder.
I used AppVeyor to build my packages with a similar nuget
command, and to publish the symbol and non-symbol packages with these options:
deploy:
- provider: NuGet
server:
api_key:
secure: DHTp3wMjKqyca2PWftol2wq7DxE9KdL8AizHVIS14T4DSSMXgc0bIiCGvvA8SkTH
skip_symbols: false # Whether to not publish symbol pkgs (src/pdb)
artifact: /.*\.nupkg/
on:
branch: master # Release from master branch only.
appveyor_repo_tag: true # Deploy on tag push only.
It seemed to work:
Publishing Loyc.Essentials.24.3.0.nupkg to https://www.nuget.org/api/v2/package...OK
Publishing Loyc.Essentials.24.3.0.symbols.nupkg to https://nuget.smbsrc.net/api/v2/package...OK
I created a test project, added my packages via the VS NuGet GUI.
Finally, I followed the detailed instructions here about how to use a symbol server. As recommended at nuget.org, I also added https://nuget.smbsrc.net to the list of "Symbol file (.pdb) locations" in VS options for Debugging | Symbols.
It doesn't work. I notice that in the SymbolCache there is a FailedLoads
folder which contains a text file for each of my DLLs (and NUnit). The text file contains simply "PDB Not Found". Why might the PDB not have been found?