Welcome to the Inedo Forums! Check out the Forums Guide for help getting started.

If you are experiencing any issues with the forum software, please visit the Contact Form on our website and let us know!

ProGet unable to find .pdb in packages that target .NET Standard 2.0



  • We've had issues retrieving symbol files from ProGet's symbol server for some of our packages and I've noticed this only happens with packages that target .NET Standard 2.0, our other packages that target .NET Framework only are working correctly, so it's not a symbol server setup issue or anything like that.

    It seems that ProGet is unable to locate .pdb symbol files and "src" folder in .NET Standard 2.0 packages, "Symbols and source files are available" text doesn't appear on the left side of the package details and, obviously, requests to the symbol server return nothing for those packages.

    I could easily reproduce the issue by creating an empty .NET Standard 2.0 library, creating NuGet package that includes symbols and source from it on build and pushing that to our ProGet instance.

    This is what the package looks like in NuGet Package Explorer in ProGet storage after push:

    Image Text

    Symbols can't be retrieved for either .NET Framework or .NET Standard target. Same situation when only .NET Standard is targeted in the package. But at the same time "Strip symbol files from packages downloaded from this feed" option in ProGet works: ProGet successfully removes .pdb files and supplies only .dll files in a package, even though it couldn't find those symbol files to properly index them for the symbol server in the first place.

    While NuGet packages for .NET Standard libraries and "regular" .NET Framework class libraries are built differently (for example, we don't use .nuspec files for .NET Standard packages, all the metadata comes from project files and a package is created on build by MSBuild as described here https://docs.microsoft.com/en-us/nuget/guides/create-net-standard-packages-vs2017) and .NET Standard is in preview, the resulting NuGet package structure is the same, I would expect ProGet to be able to find symbol files there to correctly supply them via symbol server, especially considering it's able to find them to strip them from the packages on download.

    Can we expect a fix for this or is there any other way to make it work? I can provide an example project and a NuGet package to demonstrate this issue if necessary.

    Product: ProGet
    Version: 4.7.13


  • inedo-engineer

    Hello Kirill,

    It appears that projects supporting .NET Standard create Portable PDB files instead of Microsoft PDB files. The current version of ProGet does not know how to read Portable PDB files, so it assumes they must not contain any symbols.

    I've created a tracking issue for this: PG-1054



  • Thank you for your explanation Ben.

    It would be great if ProGet supports Portable PDB in the future, meanwhile I have found a workaround that should be suitable if target platform for using packages is Windows (old PDB format can't be used on Linux or MacOS).

    Portable PDBs can be disabled by modifying the 'DebugType' property in the .csproj file:

    <DebugType>full</DebugType>
    

    'full' = old PDB format; 'portable' (implicit option) = new Portable PDB format



  • I think its now implemented:
    https://inedo.com/proget/versions
    5.0.9



Inedo Website HomeSupport HomeCode of ConductForums GuideDocumentation