Unlike .NET Standard 1, .NET Standard 2 introduces a single netstandard.dll reference assembly.
However, when compiling (with .NET Core SDK 2.2.203) with
This is sadly due to history.
You are right that in theory only netstandard.dll is needed to build a .NET Standard library.
However, two things complicate this:
System.Collections.Generic.dll to be resolvable. Also, the build system needs to know that classes that the 1.6 library expects in this dll is actually the same as the one in netstandard.dll..dll files that .NET Framework uses - from mscorlib.dll to the individual framework dlls.For both of these, references to assemblies with these names (and versions) are added which contain only type forward declarations. So for example mscorlib.dll would contain an empty System.Object entry that is marked with "go look for that in netstandard.dll".