NuGet dependencies of .NET Standard library referenced from classic .NET app cannot be resolved at runtime with FileNotFoundException
See original GitHub issueThis 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.458.808
and
Microsoft Visual Studio Professional 2017 RC
Version 15.0.26020.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.
Issue Analytics
- State:
- Created 7 years ago
- Reactions:12
- Comments:8 (1 by maintainers)

Top Related StackOverflow Question
As a work around, i modified the the NetStandard project as multi-target:
Rebuild the solution and the referenced dll are copied to bin folder of the legacy console project and it’s working fine. Have a look to that fork(develop): https://github.com/moh-hassan/nuget-dependencies-of-netstandard-library-bug
Any update on this ?
Having the same problem today on a .Net Framework6.1 ConsoleApp referencing a .NetStandard2.0 Class lib project that uses EasyNetQ.
The only way i can get it to work is adding
<TargetFrameworks>netstandard2.0;net461</TargetFrameworks>as sugested by @moh-hassan .Thanks all.