Rhino 9 BETA does not load a .NET skin (SkinDLLPath) that works in R8

Hi,

We ship a custom skin with our plug-in (a Rhino.Runtime.Skin subclass compiled as .rhs). It works in Rhino 7 and Rhino 8, but Rhino 9 BETA never loads it. I would like to know whether SkinDLLPath is still supported in Rhino 9 or whether the mechanism has changed.

Setup (identical for Rhino 8 and Rhino 9, only the version key and the file differ)

HKEY_LOCAL_MACHINE\SOFTWARE\McNeel\Rhinoceros\9.0\Scheme: Artisan
    SkinDLLPath = C:\Program Files\RhinoArtisan 7\Rhino 9\net9.0\ArtisanSkin.rhs

Rhino is started with:

"C:\Program Files\Rhino 9\System\Rhino.exe" /scheme=Artisan

The skin itself is minimal:

public class WildcatSkin : Rhino.Runtime.Skin
{
    protected override string ApplicationName => "Artisan";
    protected override Bitmap MainRhinoIcon => Resources.icon.ToBitmap();
    protected override void OnMainFrameWindowCreated() { ... }
}

What happens

Rhino 8.35.26251 Rhino 9.0.26258 BETA
Scheme is applied (RhinoApp.SchemeName) Scheme: Artisan Scheme: Artisan
Rhino.Runtime.Skin.ActiveSkin ArtisanSkin.WildcatSkin null
Skin assembly in the AppDomain loaded not loaded
Window title / icon ours “Rhino BETA”, default icon

So the scheme itself is honoured in Rhino 9 (settings are stored per scheme as expected), but the skin DLL is never loaded.

What I have ruled out

  • Runtime: same result starting Rhino 9 with /netcore-8, /netcore-9 and the default .NET 10.
  • Target framework: tried the skin built for net8.0-windows and for net9.0-windows, both against the RhinoCommon of this same Rhino 9 build.
  • Registry hive: tried SkinDLLPath under HKLM and under HKCU.
  • The assembly is fine: Assembly.LoadFrom on the .rhs from inside Rhino 9 succeeds and the Skin subclass is there.
  • No error in the command history and no dialog at startup. It fails silently.

Questions

  1. Is Scheme: <name>\SkinDLLPath still the supported way to register a .NET skin in Rhino 9?
  2. If it changed, what is the new registration, and does the .rhs need anything different (location, extension, attributes)?
  3. If this is simply not implemented yet in the BETA, is it planned?

Windows 11, Rhino 9.0.26258.12303. Happy to send a small sample project if that helps.

Thanks!

A small sample would probably help. We didn’t intentionally remove support for skins.

I’ve tested a C++ sample with the current Beta - works as expected.

– Dale