NuGet Symbol Server

Cloudsmith provides public & private symbol server support for NuGet

The NuGet Symbol Server is a repository that stores and serves debugging symbols (PDB files) and source files for packages published.

By using the Symbol Server, developers can step through and debug their code more easily, even when working with compiled libraries or packages, as it provides access to the necessary debugging information.

For more information on Symbol Server, please see:

Contextual Documentation

The examples in this document are generic. Cloudsmith provides contextual setup instructions within each repository, complete with copy and paste snippets (with your namespace/repo/rsa-key pre-configured).

In the following examples:

IdentifierDescription
OWNERYour Cloudsmith account name or organization name (namespace)
REPOSITORYYour Cloudsmith Repository name (also called "slug")
TOKENYour Cloudsmith Entitlement Token (see Entitlements for more details)
USERNAMEYour Cloudsmith username
PASSWORDYour Cloudsmith password
API-KEYYour Cloudsmith API Key
PACKAGE_NAMEThe name of your package

Configuring Cloudsmith Repository as Symbol Server

Private Repositories

Private Cloudsmith repositories require authentication. You can choose between two types of authentication, Entitlement Token Authentication or HTTP Basic Authentication. The setup method will differ depending on what authentication type you choose to use.

Each individual repository in Cloudsmith can be configured as a Symbol Server in Visual Studio. Only symbols within that repository will be served back to the debugger.

In Visual Studio, go to Tools > Options

Inside Options, on the menu to the left navigate to Debugging > Symbols, using the plus icon on the top-right, enter the URL of your repository, as follows:

text
https://nuget.cloudsmith.io/OWNER/REPOSITORY/download/symbols
npm Proxy Settings

If your repository is private, at this stage you might be asked for credentials, you can use either an entitlement token or your personal api key.

text
Username: token
Password: TOKEN
text
Username: USERNAME
Password: API-KEY

By default the debugger will only display and step into user code only, ignoring system code and other code that is optimized or does not have debugging symbols available locally. To allow Visual Studio to go fetch PDB symbols for imported nuget packages, the Just My Code option has to be disabled.

For this in the same Options screen, navigate to Debugging > General and disable Just My Code

npm Proxy Settings

You can now start a debug session, the first time you do it Visual Studio, if your repository is private, it will prompt you for credentials:

npm Proxy Settings

You can use either an entitlement token or your personal api key.

text
Username: token
Password: TOKEN
text
Username: USERNAME
Password: API-KEY

Troubleshooting

I have snupkg symbols in my repository but Visual Studio can't find them

If you had snupkg symbols uploaded from before this feature was released, it's possible that the pdb files are not indexed. Check in the UI in the Files tab if you see pdb files attached to your package

If you don't see one or more pdb files here, then do a Resync of your package to force a re-index.

If you do see pdb files then it's possible that Visual Studio is configured to not load the module you want to debug. To fix this in Visual Studio, head to Tools > Options, and navigate to Debugging > Symbols, on the bottom of the screen there's an option titled Automatic symbol loading preference

Set this to Load all modules, unless excluded