Best Practices for loading Legacy Components For Rhino 5

There is a Rhino-6-specific path. Files in this directory will be loaded by GH1 but not by GH0

%appdata%\Grasshopper\6\Libraries\

It’s also a solution that GH loads assemblies from Rhino plugin path, such as:

C:\Program Files\Rhino 6\Plug-ins\Grasshopper\Components\
C:\Program Files\Rhino 6\System
C:\Program Files\Rhino 6\Plug-ins\Toolbars
C:\Program Files\Rhino 6\Plug-ins
C:\Program Files\Rhino 6\Plug-ins\Grasshopper
C:\Program Files\Rhino 6\Plug-ins\IronPython

Obviously Rh5 and Rh6 have different plugin locations.

I think the design logic here should be: If a plugin doesn’t use undocumented APIs, it should work in R6 just as it worked in R5, but not vice versa.

As for my plugin, I never run into any feature that is available in R5 but not in R6, so my plugin supports both version with one single binary. However, there are notable differences between GH for Mac and GH for Win, consequently I never finished the porting until recently.