When I've built a shared .NET library in the past (for internal use, not a public library), I've embedded a serialization library (usually Newtonsoft) as a resource and used assembly resolving to load it in a manner similar to Embedding DLLs in a compiled executable. I've done this so the users of the library aren't forced to worry about the version of Newtonsoft that the library was built with.
In a .NET Core world, is this still a good approach? It seems like with the deep inclusion of NuGet, it might not be needed anymore, but I haven't built a large enough number of .NET Core applications to know how bad dependency graph management can get.