Home

NuGet window "show assemblies in package" is missing a file.

I have two machines on my office desk. Both running LINQPad.

I am accessing the same internal nuget server. Only difference is that I added the Nuget server through the LINQPad GUI on machine A, and copied the LINQPad settings file onto machine B.

When query was copied and pulled up inside LINQPad on machine B, it retrieved the package, but the query doesn't compile. The package is a single dll and a single dll from a dependency.

In the "show assemblies in package" on both computers, machine B shows only the (indirect) dependency assembly (1 file) whereas machine A shows both assemblies (the actual assembly as well as the external dependency assembly).

I don't see any error messages. A colleague tried to add the dependency this morning and he sees both assemblies.

I tried removing the nuget server entry and adding it manually. Then re-adding the nuget package after clearing the cache. No effect.

No matter what I do, the nuget package assembly wont appear. I have inspected the cache and the assembly is downloaded. It is just not reflected in LINQPad.

Comments

  • edited May 2018
    Something to check is whether the two machines have the same version of the .NET Framework installed. Depending on whether it's 4.6, 4.6.1, 4.6.2, 4.7, or 4.7.1, the NuGet assemblies can differ.

    Run the following query:
    http://share.linqpad.net/kfk63h.linq

    And to check what file versions the nuget package uses, look in LINQPad's NuGet folder:

    Process.Start (Path.Combine (Environment.GetFolderPath (System.Environment.SpecialFolder.LocalApplicationData), "LINQPad", "NuGet.FW46"));

    and then in the subfolder for the package, examine LINQPadPackageInfo.xml

    If you see something like this:
       ...
      <Reference>lib\net46\Something.dll</Reference>
      <Reference>lib\net47\SomethingElse.dll</Reference>
    you have a smoking gun.
  • edited May 2018
    There might be something there.
    This is from machine A where things are working. It is the masked out assembly that fail to display on machine B.

    So, I tried installing .NET standard 2.0 on machine B just now. Re-adding the nuget dependency didn't work (assembly still missing in the dialog).

    I tried creating an empty query on machine B where I took a direct dependency straigth from the cache to see if I ran into issues. The new query had both intellisense and F5 didn't give any errors.

    I also confirmed that it is the .NET45 version of newtonsoft dll file that the machine B dialog displays.

    But you were right in that the .NET standard 2.0 wasn't on machine B. Installing it didn't solve it though.

    This is from machine A:

    imagetinypic.com/r/iqx00i/9
  • Did you re-download the NuGet package after installing .NET Standard 2.0?
  • You were indeed right.

    I installed the .NET standard 2.0, as mentioned before, but didn't have effect.
    However, I also installed .NET Framework 4.6.1, which is the underlying runtime.
    Then a restart of LINQPad did it.

    I didn't have to redownload it.

    Thank you.

    Of course, it would be nice if I had received any error message or something as to why assembly was rejected. Or even that it was rejected at all. The loaded assemblies not matching the nuget manifests.

    But thank you for your attention and your quick pointer to the heart of the problem.
Sign In or Register to comment.