question-mark
Stuck on an issue?

Lightrun Answers was designed to reduce the constant googling that comes with debugging 3rd party libraries. It collects links to all the places you might be looking at while hunting down a tough bug.

And, if you’re still stuck at the end, we’re happy to hop on a call to see how we can help out.

Arcade's Publish.proj needs to provide a mechanism for uploading files other than PDBs

See original GitHub issue
  • This issue is blocking --> not blocking but makes finding and loading matching symbols automatedly very hard
  • This issue is causing unreasonable pain --> Blocks debugging winforms designer crashes via automated symbol server loading of PDBs

See https://github.com/dotnet/arcade/blob/master/src/Microsoft.DotNet.Arcade.Sdk/tools/Publish.proj#L164-L166 . From discussing this with @mikem8361 , this task should be uploading the matching DLLs at the same time so they can be indexed and loaded.

It might be as easy as adding a line to glob in DLLs:

    <ItemGroup>
      <FilesToPublishToSymbolServer Include="$(ArtifactsSymStoreDirectory)**\*.pdb"/>
      <FilesToPublishToSymbolServer Include="$(ArtifactsSymStoreDirectory)**\*.dll"/>
    </ItemGroup>

… in addition to making sure “the right” DLLs are copied under ArtifactsSymStoreDirectory

Details

  • This doesn’t impact other repos like ASP or Runtime because:

    • Their interesting stuff is all published in nupkg & symbols.nupkg format
    • Their symbols.nupkgs include the DLLs they’re indexing
    • That said, if there are DLLs that aren’t also contained in a nupkg, it’s entirely possible there are non-indexed DLLs from runtime or other repos too.
  • This does affect winforms-designer because:

    • At least in the builds I’ve looked at their only nupkg is just a reference assembly one that doesn’t contain PDBs
    • They publish their PDBs independently of nupkgs, so go down a slightly different path.

In order to fix this:

In Arcade, we will need to:

  • Also glob binaries (.dll, .exe, possibly others?) when selecting files to publish to symbol servers (currently **/*.pdb only)
  • Ensure that the Yaml templates provided for publishing work for this (looks like if the DLLs are included anywhere within “PDBArtifacts” artifact, it just works, otherwise we need to intentionally download one more artifact, call it something like “DLLsToIndex”
  • [STRETCH] Potentially teach the symbols publishing task to know how to unpack vsix files (tricky because it includes DLLs we don’t publish)

Issue Analytics

  • State:closed
  • Created 3 years ago
  • Comments:25 (25 by maintainers)

github_iconTop GitHub Comments

3reactions
AdamYoblickcommented, Sep 15, 2020

@MattGal , thank you for your help on this. Our latest build from master is at https://dnceng.visualstudio.com/internal/_build/results?buildId=816181&view=results. I’ve downloaded the vsix and run symchk against the dll’s within, and I got no errors back.

So we should be good. Feel free to close out this issue. 😄

1reaction
AdamYoblickcommented, Sep 15, 2020

Ok things are looking good 😄

Here’s what I did to verify:

  1. Get latest arcade sdk, modify winforms-designer build scripts to include the our VSIX dll’s in the artifacts to publish, and run an internal build at https://dnceng.visualstudio.com/internal/_build/results?buildId=814695&view=logs&j=65907e9e-dc2e-508d-4ed4-c5ec62867dbe&t=64d9e60c-b051-596f-8314-f9b1945f4e19
  2. Verified that dll’s are published in the “PdbArtifacts” build artifact
  3. Verified that the Symbol Publishing step passed
  4. Downloaded the VSIX from the build artifacts and unzip it, and delete all the *.resources.dll files since those are just for localization (and they create noise when checking symbols)
    • del /a /s "<vsixUnzippedFolder>\*.resources.dll"
  5. Download the Windows 10 SDK (https://developer.microsoft.com/en-us/windows/downloads/windows-10-sdk/) to get symchk
  6. Run symchk against the dll’s from the VSIX, like this: symchk.exe "<vsixUnzippedFolder>" /r /s SRV*http://symweb

When I ran that command, I see this:

SYMCHK: Nerdbank.Streams.dll FAILED  - Nerdbank.Streams.pdb mismatched or not found
SYMCHK: Newtonsoft.Json.dll  FAILED  - /_/Src/Newtonsoft.Json/obj/Release/netstandard2.0/Newtonsoft.Json.pdb mismatched or not found

SYMCHK: FAILED files = 2
SYMCHK: PASSED + IGNORED files = 63

The two failed files are not ours.

So I think it’s safe to say that this is working properly. I’m going to PR into our github branch and verify again there, but I think we’re good. 😄

/cc: @JeremyKuhne @dreddy-work @Shyam-Gupta @merriemcgaw

Read more comments on GitHub >

github_iconTop Results From Across the Web

BIM 360 Help | Upload and Publish Documents
Upload and Publish Files. Use this method for non-linked PDFs, drawings and design files. The workflow for uploading PDFs differs from other files,...
Read more >
Upload Files or Folders to the Project Level Documents Tool
Objective. To upload files and folders to a project's Documents tool. Things to Consider. Required User Permissions:.
Read more >
Uploading Files — Flask Documentation (2.3.x)
So first we need a couple of imports. Most should be straightforward, the werkzeug.secure_filename() is explained a little bit later. The UPLOAD_FOLDER is...
Read more >
Upload files and folders to a library
In File Explorer, locate the file you want to upload. Select the file, then on the toolbar, select the Cut option. In File...
Read more >
POST method uploads - Manual
POST method uploads ¶. This feature lets people upload both text and binary files. With PHP's authentication and file manipulation functions, you have...
Read more >

github_iconTop Related Medium Post

No results found

github_iconTop Related StackOverflow Question

No results found

github_iconTroubleshoot Live Code

Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start Free

github_iconTop Related Reddit Thread

No results found

github_iconTop Related Hackernoon Post

No results found

github_iconTop Related Tweet

No results found

github_iconTop Related Dev.to Post

No results found

github_iconTop Related Hashnode Post

No results found