Apologies if a similar topic exists, but I haven’t been able to find anything quite like this on here. I’m running into an issue moving my plugin (Pachyderm) over to Rhino 6. I have set up Visual Studio so that it outputs both a Rhino 5 and a Rhino 6 version. Only two code files differ between the two projects. So far so good!
The project builds, and sometimes it starts in Rhino 6, no issues. Other times, it either does a 12 second compatibility check and rejects the plugin, or just claims that the plugin is incompatible with Rhino 6. What gives?
This is pretty frustrating. Could someone please tell me what the compatibility check is looking for, and maybe share any insight into why this might be happening, and what I can do to eliminate it altogether?
If you’ve recompiled your plug-in for Rhino 6 then the compatibility check shouldn’t run when the Rhino 6 version of your plug-in is loaded in Rhino 6. The check should only run when the Rhino 5 version is loaded in Rhino 6.
How are you loading the plug-in? Directly from bin directory after compiling?
I am loading it from the bin/debug or bin/release directories. When I install it from deployment, I put it in a Pachyderm directory in program files, and the same thing can happen there as well.
The two projects differ primarily in which Rhinocommon.dll file they reference. The v5 one references the Rhinocommon file from Rhino V5 X64. Natrually, the v6 one references the Rhinocommon file from Rhino V6. This also led to code changes in two of my files, so I know that my V6 version is referencing the right version of Rhinocommon. Given that, I don’t think that the check is happening in response to a plugin that is not compiled for V6…
I also deploy a version for grasshopper, which I have found does not need to be compiled again for V6. Could that be triggering the check? (the check happens before grasshopper loads, so while I guess this seems like a possibility, I defer to you…)
Thanks for confirming. Can you send the compiled plug-ins to me for testing? Both versions, if possible. Either via discourse or to will@mcneel.com.
By the way, this “compatibility” feature is supposed to make it easier to load plug-ins from earlier versions (where the plug-in doesn’t use any parts of the SDK that were “broken”). I’m sorry that it’s causing you issues with your re-compiled plug-in!
If you have build targets specifically for v5 and v6 you should also have separate build paths. That way you won’t overwrite the plug-in with the ‘wrong’ version.
Thanks for looking into it. I’m realizing that this may be a Visual Studio issue, rather than a Rhino issue. Let me just share with you what my solution setup is. Here is my solution explorer, with all current projects linked. Note that there are two solutions for Pachyderm for Rhino (Pachyderm_Acoustic (the v6 version), and Pachyderm_Acoustic-RV5 (the v5 version)):
They both reference the same files, except that the v6 version has two unique files with minor code changes for compatibility. Now, here are the settings for the v5 version pertaining to output location:
I agree that it looks awfully like the v6 version was overwritten by the v5 version… I don’t understand why that would be the case under these settings. Do you?
I have an object properties page. In the parent class for Rhino.UI.ObjectPropertiesPage, there is a virtual (I think) item called PageControl. In V5, it returns a ‘Control’ object. In v6, it returns ‘object’.
In Rhino.UI.OptionsDialogPage, the same issue occurs. PageControl outputs ‘Control’ in V5, and ‘object’ in v6.