Rhino 8 .NET Framework Plug-in Support Regression SR3(?) to SR11

We had someone reach out to us about an issue loading our plug-ins that we were able to replicate. Our current public release targets .NET Framework. We have been able to successfully load in and use the plug-ins in Rhino 8, at least through SR3. Testing the latest Service Release 11, we encounter the following error:
image

The suspect DLL (or at least the first one we hit), Microsoft.Bcl.AsyncInterfaces, is in our installed directory, as is our .RHP file. The behavior noted in SR3 is that both versions of the file, 7.0… as installed with Rhino, and 5.0… as installed with our program, are loaded and correctly uses our version. However, in SR11, only the 7.0… version from Rhino is loaded.

Any insights on what changed in dependency loading/resolution? We had similar issues during our .NET 8 development which we have resolved, though this is the first we are seeing it in the .NET Framework version, which has been static.

Previous versions could also help us narrow down the issue. SR3 is the earliest version I have, which is admittedly a broad range. Nothing really stood out to me in the release notes, so from looking at other threads on prior releases, 8SR9 looks like an okay place to start. My system info dumps from 8SR3 (the earliest I could access) and 8SR11 are below.

Rhino 8SR11 System Info.txt (2.3 KB)
Rhino 8SR3 System Info.txt (2.5 KB)

@curtisw - is this something you can help with?

Hi @bwui,

Thanks for raising the issue. A lot has changed since SR3 so it’s hard to say exactly what might have caused that to happen.

Would you be able to send a copy of your plugin for us to troubleshoot? It would help greatly to bisect on our end to see what change(s) caused this to happen so we can understand how we might be able to fix or avoid the issue.

Cheers,
Curtis.

Hi @curtisw ,

Thank you for your response. This is going to be a tricky one because our plug-in is licensed, and the breakpoint is behind the license check. The simplest process I think would be to provide you with our installer and a test license, so that the libraries we are expecting are included as well. Let me know if this makes sense, and we can continue the discussion in messages.

Separately, I am tracking down intermediate versions between SR3 and SR11 from my colleagues to try and narrow that range down.

Thanks,
Brandon

Hey @bwui,

Yes, a test license would work great, and allow us to verify any fixes on our end. Feel free to send me a DM or email to curtis@mcneel.com with the details.

Excellent! That will help greatly.

Also, have you considered or investigated updating your dependencies? Microsoft.Bcl.AsyncInterfaces 7.0.0 is compatible with net461 and later. I realize it probably isn’t this dependency but another that depends on it, however it might be another avenue to resolve this issue.

1 Like

Hey @bwui,

Just as a follow up, I’ve finally managed to track this one down. In my findings this only started happening in SR11 and I did manage to figure out why - Rhino is loading the wrong version of Microsoft.Bcl.AsyncInterfaces from the netcore folder, which it should not be doing when running in .NET 4.8.

I haven’t got a fix for it just yet but am working on it now and filed RH-84187 to get this resolved.

Hi @curtisw,

Thanks for the update. We’ve had our fair share of reference issues with multi-targeting (though not Framework to Core) and understood. Will keep a look out on updates to that issue, though link is currently broken, perhaps just a refresh delay on the issue tracker.

Thanks,
Brandon

The link is not broken, it just not found since it is not visible to the public.

Ah yes I forgot to make it public. It should now work.

RH-84187 is fixed in Rhino 8 Service Release 14