One of the features introduced with .Net Standard Projects was the definition of Nuget Package Dependecies via Package Reference tags in the csproj file and the removal of the packages.config. There are however some issues when referring to a local project via a Project Reference using the packages.config (.Net Framework app using the legacy csproj), where the referenced project has dependencies on a Nuget Package via a Package Reference.
System.IO.FileNotFoundException: 'Could not load file or assembly 'Newtonsoft.Json, Version=12.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed' or one of its dependencies. The system cannot find the file specified.'
The dependent DLLs aren’t where the Application expects them to be because they aren’t being referenced consistently throughout the application.
Scenario

NugetPackageReference.Console – .Net Framework Application referencing local project NugetPackageReference.Dependent
NugetPackageReference.Dependent – .Net Standard Project referencing Nuget Package Newtonsoft.Json
DependentClass.cs – uses anything from Nuget Package
namespace NugetPackageReference.Dependent { public class DependentClass { public string NewtonsoftJsonNull() { return Newtonsoft.Json.JsonConvert.Null; } } }
Program.cs – calls method referring to Nuget Package
using NugetPackageReference.Dependent; namespace NugetPackageReference.Console { class Program { static void Main(string[] args) { var dependentClass = new DependentClass(); var nullString = dependentClass.NewtonsoftJsonNull(); } } }
This will give you…

Resolution
Option One – Reference Package
Add a Nuget reference to the Root Project to the missing Package.
Option Two – Migrate Packages.config to PackageReference
There is a tool in Visual Studio to migrate package references to the csproj file, however it doesn’t currently work for all Project Types, (Service Fabric applications using .Net Framework, WPF for example). This method is preferable. If your project falls into this category the only way I know of to resolve the issue is Option One.
Right Click the packages.config file and select Migrate packages.config to PackageReference…

Having done this the root project will now resolve dependencies further down the tree through the PackageReferences.
Summary
Microsoft have given us a great way of migrating towards .Net Core while being able to retain business logic from existing .Net Framework applications. The integration of these components can be complex however and initially, isn’t quite foolproof.
What issues have you faced migrating towards .Net Core?
Do you know of a better way to solve this for legacy projects?