Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Conversation

@jefgen
Copy link
Member

@jefgen jefgen commented Aug 21, 2020

Summary

It turns out that Nuget.org doesn't support "Nuget Symbol Packages" for native binaries at all.

They only support symbols for "managed" code (ie: C# or dotnet). If you try to upload a .snupkg that
contains native/C++ .pdb files in it, then it is rejected.

This means that we can't use Nuget.org for publish symbols at all, and instead need to find alternative methods.

Unfortunately, it turns that in order to publish symbols to the public https://symweb symbol server you need to
setup and maintain a corp-email-enabled domain service account, setup appropriate key storage in Azure Key Vault,
and then request special permission to publish using a PAT to push the symbols. This adds a ton of overhead.

In order to provide symbols but try to reduce the amount of overhead, we can upload the symbols to the GitHub
release page for a given MS-ICU version -- which does allows uploading any arbitrary zip files.

In the Nuget package nuspec we can then provide a direct link to the GitHub release page, so a user doesn't need
to hunt around on a wiki page to find the right symbols for a particular version. (Thanks to Axel for this idea).

This will let us provide debugging symbols for the Nuget packages (for both Windows and Linux) and the user only
has to click the link in the Nuget package description to find the downloads.


However, as an added bonus, it turns out that we can publish the Windows symbols to MSCodeHub -- which actually has its own symbols server.

This means that for Windows users, they can add the following to their debugger symbol path:

https://mscodehub.artifacts.visualstudio.com/defaultcollection/_apis/symbol/symsrv

And then the correct symbols for any version will be resolved automatically. :)

This means that we can provide symbols two ways:

  • For both Windows and Linux symbols:
    • On the GitHub release download page (with a direct link in the Nuget package).
  • For just Windows symbols:
    • Using MSCodeHub's symbol server.

PR Checklist

  • I have verified that my change is specific to this fork and cannot be made upstream.
  • I am making a maintenance related change.
  • I am making a change that is related to usage internal to Microsoft.
  • I am making a change that is related to the Windows OS build of ICU.
  • CLA signed. If not, please see here to sign the CLA.

@jefgen jefgen requested review from a team, axelandrejs and daniel-ju August 21, 2020 19:42
@jefgen jefgen merged commit d67fd9f into master Aug 24, 2020
@jefgen jefgen deleted the user/jefgen/test-symbols-publishing branch August 24, 2020 21:54
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants