Best Practices for loading Legacy Components For Rhino 5

unhandled

#1

What is the best practice for keeping legacy versions of grasshopper plugins so that you can have both a functional install of Rhino6 and Rhino5?

Ideally, we would have Grasshopper in Rhino5 point to a different folder for plugins than Grasshopper in Rhino6 so that there aren’t so many conflicts. I often need to open up older files and it would be great if I could simply open them up in Rhino 5 with the plugins that were working in Rhino 5. Why do Rhino 5 and Rhino 6 both look in the same folder (AppData>Roaming>Grasshopper>Libraries) for Grasshopper plugins? It seems like the changes to Rhino and Grasshopper between Rhino 5 and 6 were big enough that maybe it would make sense to have two libraries, one for each Rhino version? A bunch of plugins have either R5 or R6 versions and I can’t have both in the libraries directory without errors.

It’s great that Rhino installs new versions of itself without overwriting the old version but it seems like that then creates a conflict with Grasshopper sharing the same libraries. If anyone has a good solution for this, please let me know. For example, is it possible to force Rhino5 to look for plugins in here instead:
AppData>Roaming>Grasshopper>Libraries5

Thanks


(Keyu Gan) #2

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.