> the Windows kernel is what allows the multiple versions to exist.
I don't think you know what the Windows kernel does. Multiple library versions have nothing to do with the kernel because 1) the kernel doesn't know anything about libraries, 2) the kernel doesn't do userspace binary loading (even for completely unmanaged code), and 3) the kernel does nothing at all with .NET.
Side-by-side deployment of binaries is actually completely separate from the functionality in .NET that allows multiple versions, which is the GAC (Global Assembly Cache); SxS binaries (which are used by unmanaged code) are completely separate, although they both reference their respective binaries via manifest files.
I don't think you know what the Windows kernel does. Multiple library versions have nothing to do with the kernel because 1) the kernel doesn't know anything about libraries, 2) the kernel doesn't do userspace binary loading (even for completely unmanaged code), and 3) the kernel does nothing at all with .NET.
Side-by-side deployment of binaries is actually completely separate from the functionality in .NET that allows multiple versions, which is the GAC (Global Assembly Cache); SxS binaries (which are used by unmanaged code) are completely separate, although they both reference their respective binaries via manifest files.