Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

NuGet dependencies of .NET Standard library referenced from classic .NET app cannot be resolved at runtime with FileNotFoundException #766

Closed
OutSorcerer opened this issue Jan 31, 2017 · 1 comment
Assignees
Milestone

Comments

@OutSorcerer
Copy link

This issue is reproduced in that repository. Just build it and run ClassicConsoleApp.

Let's assume there is a simple .NET Standard library that has a dependency from Newtonsoft.Json NuGet package. And this library, in turn, is referenced by a classic .NET 4.6.1 console application. This solution builds successfully but during runtime when console application tries to instantiate a class from .NET standard library the following exception is thrown:

System.IO.FileNotFoundException: 'Could not load file or assembly 'Newtonsoft.Json, Version=9.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed' or one of its dependencies. The system cannot find the file specified.'

One possible workaround is to manually copy Newtonsoft.Json.dll from C:\Users\{username}\.nuget\packages\newtonsoft.json\9.0.1\lib\netstandard1.0 to the output folder of the classic .NET console application. Maybe msbuild should do it automatically.

When referencing the same library but from .NET Core console application Newtonsoft.Json.dll is also missing in output folder but the program works as expected. In this case Newtonsoft.Json dependency is included in CoreConsoleApp.deps.json that is missing in output folder for the classic .NET application.

CoreConsoleApp.runtimeconfig.dev.json file in .NET Core console app output folder with

{
  "runtimeOptions": {
    "additionalProbingPaths": [
      "C:\\Users\\{username}\\.nuget\\packages"
    ]
  }
}

could be another hint for runtime to locate Newtonsoft.Json.dll. This file is also missing in classic .NET application's output.

I am working with

Microsoft (R) Build Engine version 15.1.523.56541

and

Microsoft Visual Studio Professional 2017 RC
Version 15.0.26127.0 D15REL 

This problem exists at least from August 2016 and was mentioned in this and this stackoverflow questions but there are no solutions yet.

PS. I rechecked this after the recent update of VS 2017 RC, the issue still exists. I also reported this issue at dotnet/msbuild#1582 but had no luck maybe it better fits to this repository.

@srivatsn
Copy link
Contributor

Actually #757 seems to be tracking the same thing. Let's use that issue instead

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants