Difference between net8.0 vs net8.0-windows vs net8.0-macos

As mentioned in the title, when building a C# based plugin for both Windows and MacOS platform, what are the difference between the three?

I know that the default Template has net7.0 and net7.0-windows, and since v8.21, net8 is also unofficially supported.

My questions are:

  1. When not adding additional UI elements, would net8.0 be sufficient for both platforms?
  2. Does net8.0-macos really works in some way?

From what I understand on several posts in the forum, Eto will replace System.Windows.Form on macOS.

But it seems with only net8.0, The plugin also works on Windows platform?

A bit confused about the difference and how McNeel supports them.

Using net8.0-windows or net8.0-macos gives you access to os specific stuff like UI elements.

R.e Q1
For most plugins, you can just use net8.0 so your code targets both platforms without any specifics, such as Windows Forms.
If you want to make UI you can indeed use Eto.

R.e Q2

There’s not much reason (that I’m aware of) to use net8.0-macos for Rhino Plugins.

We don’t need to do much to support these. When you choose these frameworks dotnet builds a package for each one, Yak will happily accept any and all frameworks and load them as necessary.

TL;DR use net8.0 and if you have issues, come back to this thread.