Consuming NuGet packages
Packages play a very important role in modern application development because they define a self-contained unit of code that can be used as a brick to build larger applications.
This same definition was used in the past for libraries composed by a single .dll
file, but modern development often requires more files to make a unit of code that's properly self-contained. The simplest example is when a package contains the library as well as its dependencies, but another, more complex, example is writing a library needing platform invocation calls to native APIs.
Native interoperability can also be written in a single library by using the aforementioned RuntimeInformation
class, but it is generally better for both performance and maintenance to split the code into one library for each OS and CPU architecture. The advantage of packaging the platform-dependent libraries is that it lets the .NET Core build tools copy the relevant library in the output folder...