NuGet Symbol Repository Layout
The NuGet Symbol files are displayed as part of the NuGet repository structure as follows.
Publishing NuGet Symbol Packages to Artifactory
The JFrog Platform supports publishing and automatically indexing your Symbol packages to be consumed by the debugger.
- Create your NuGet Symbol packages (.snupkg). For more information, see Create Symbol Packages.
Setting up a Local Repository
Local repositories enable you to deploy NuGet Symbol (.snupkg) packages. Artifactory calculates the metadata for all the Symbol packages and indexes them to allow users to download Symbol files through the Visual Studio debugger.
To create a NuGet Symbol local repository:
- Navigate to the Administration module, go to Repositories | Repositories | Local | New Local Repository.
- Select NuGet as the Package Type.
Setting up a Virtual Repository
An Artifactory Virtual Repository aggregates packages from both local and remote repositories.
This allows you to access both locally-hosted NuGet Symbol packages and remote proxied NuGet Symbol files from a single URL that is defined for the virtual repository.
To create a virtual NuGet repository:
- In the Administration module, under Repositories | Repositories | Virtual.lick New Virtual Repository and set NuGet to be its Package Type.
- Select the underlying local and remote NuGet Symbol repositories to include under the Repositories section.
Setting up a Remote Symbol Server Repository
You can proxy a remote Symbol Server through the JFrog Platform remote repositories. A Remote Repository defined in Artifactory serves as a caching proxy for a registry managed at a remote URL such as (which is the http://symbols.nuget.org/download/symbols).
Symbol files requested from a remote repository are cached on demand. You can remove downloaded Symbol files from the remote repository cache; however, you can not manually push Symbol packages to the remote NuGet repository.
To define a remote repository to proxy as a remote Symbol Server follow these steps:
- From the Administration module, select Repositories | Repositories | Remote.
- Click New Remote Repository and select NuGet from the Select Package Type dialog.
- In the Basic tab, set the Repository Key value, and specify the URL to the remote registry in the NuGet Symbol Server URL field. Note that the default is set to http://symbols.nuget.org/download/symbols.
Configure the NuGet CLI to Work Opposite Artifactory as the Symbol Server
In addition to building and creating NuGet packages (.nupkg), the NuGet client also supports creating associated Symbol packages (.snupkg or .symbols.nupkg), that contain all the relevant symbol files for the NuGet package. The Symbol packages can be pushed to a Symbol Server, where the Symbol files can be indexed and consumed by the Visual Studio Debugger.
The Symbol package structure is similar to the NuGet package but contains the Symbol files instead of the source files.
To configure the NuGet CLI:
- In the JFrog Platform, navigate to Application Module | Artifactory | Artifacts.
- Select the NuGet repository you created,
- Select Set Me Up.
- In the Configure tab, set up the NuGet repository to work against the NuGet Client.
- Add the following line to the NuGet.config file.
- In the Deploy tab, choose from one of the following Push options.
Push NuGet packages together with their related Symbol packages
When you run the
nuget pushcommand, if there is a Symbol package present in the same directory, then the Symbol package will be automatically pushed to the same location.
As displayed in the following example.
Pushing NuGet Symbol packages only
When you run the nuget push command, you can decide to push only Symbol packages by adding an ‘s’ as the prefix to the nupkg string.
As displayed in the following example.
Viewing Individual Symbol Package Information
After deploying your Symbol package to Artifactory, you can view the indexed Symbol files. In the Artifact Repository Browser, select your NuGet repository and scroll down to find and select the Symbol files you want to inspect.
Debugging Symbol Files in Visual Studio
The way in which Visual Studio and other debugging tools match an assembly and PDB file, is by using the assembly hash. This hash is stored in the .
.pdb files and must match for the debugging and source stepping to work.
.pdb files, Visual Studio will not reach out to MyGet to download Symbols and sources. When trying to debug using this type of package, Visual Studio will find the
.pdb on the disk instead of reaching out to MyGet to download it, and therefore will fail stepping into the code because of that.
- In Visual Studio, under Tools | Options (or Debug | Options) | Debugging | General, clear the Enable Just My Code field.
- Set Artifactory to be your Symbol Server in Visual Studio by going to Tools | Options | Debugging | Symbols and adding the virtual or local repository URL path.
To debug the Symbol files in Artifactory:
- Run the Visual Studio Debugger and type in your credentials.
Once logged in, the debugger scans the local cache and then goes to the virtual repository in Artifactory as displayed in the following example.
- Once the symbol is resolved by Visual Studio, proceed to debug the deployed Symbol file.