Hi, just to clarify a few things:
netstandard2.0 can consume net48 (in a compatibility mode), but cannot consume dotnet core.
This statement is not correct, .NET Standard was introduced on purpose to create a set of APIs that intersect both .NET Framework and .NET Core. See: .NET Standard - .NET | Microsoft Learn
I can load an .rhp compiled as .net standard 2.0 in both Rhino 7 and Rhino 8 for Windows. I haven’t tried for Mac, but there shouldn’t be a reason for it not to load.
The crux of the problem really is how to handle APIs that are available in both Windows and Mac but are outside of the intersection that NET Standard provides, mainly System.Drawing.
The way McNeel handles this, is really not what Microsoft recommends, but it’s how it was done during the Mono times, before .NET Core. This is, lets just target .NET Framework, and if the code uses any APIs not available on Mac, let it compile anyways and it will just fail at runtime.
They have kept this way and just added the suggestion to also target .net 7 to have some way to identify this intersection of APIs.
Ideally, McNeel should have made RhinoCommon also target .NET Standard and include something like System.Drawing.Common to fill the System.Drawing gap. It is possible they tried something similar and didn’t work for some reason or was too much work and decided to leave things as they are, but I’m just speculating.
If you target .NET Standard on a Rhino plugin project, besides getting a warning saying that RhinoCommon is not compatible (like with .net 7) since it targets .net framework. You will need to add a package like System.Drawing.Common to cover the missing APIs mentioned above if you need them. And even so it might still be difficult to get it to compile if you use RhinoCommon APIs that return System.Drawing types.
So the path of least resistance might be to target .net framework and make sure you don’t use APIs that are not available on Mac, but this is not ideal and is not what Microsoft would recommend.
If your project is split into several projects with a main .rhp and multiple .dlls, those dlls can target .net standard if they don’t use System.Drawing.
I’m making several presumptions about why things are the way they are, it would be great if @curtisw could correct these.