How to reload Plugin for testing custom-made plugins?

Hi all, I am trying to write some handy custom command with Visual Studio. With Grasshopper we can do a GrasshopperReloadAssemblies to quickly test the Gha.

But can we also do it for Rhino Commands Rhp?
Or do i need to Restart Rhino everytime i made some update?

GrasshopperReloadAssemblies isn’t quite supported now.

The simple answer is no you can’t (probably shouldn’t) hot reload RHP/GHA due to .NET loading mechanism. I’d recommend VS’es Hot Reload.

1 Like

I personally never rely on hot reload from VS, since data state may become different than from I expect opening a whole new world of pain while debugging.

1 Like
1 Like

I would also recommend looking into VS hot reload

1 Like

Hi all,
Thanks for your help.

I spent a few hours doing some research but it seems the Hot Reload is only applicable in VS 2022, but the Rhinocommon library is only compatible up to VS 2019, which I am using now.

Please shed some light on this. I would really appreciate it.

You can use VS 2022 to compile and debug your plug-in. We do not have a project wizard for 2022 yet, but if you have an existing project created in 2019, you can load that into 2022.

I am using VS 2019 and it has Hot Reload.

Hi gankeyu,
I am a beginner to Visual Studio. May I know where I can get the Hot Reload? I only see it in 2022.

image

OK i troubleshoot it myself, but still, it says here Hot Reload is unavailable…

:confused:

Oh that hot reload is for Windows Presentation Framework (an UI framework). I’m talking about the “Hot Reload” of applying code changes, this:

Imgur

Don’t know which you are referring to

1 Like

Thanks.
I didn’t know that button is actually the Hot Reload.

If you are updating the project wizard at some stage then could you use the expression form for the generated component’s properties?

for example:

    /// <summary>
    /// Provides an Icon for the component.
    /// </summary>
    protected override System.Drawing.Bitmap Icon => Resources.Gantry;

    /// <summary>
    /// Gets the unique ID for this component. Do not change this ID after release.
    /// </summary>
    public override Guid ComponentGuid => new Guid("d8b8e5f2-0e2f-4741-88f8-bc9914a6fb05");

it’s small beer but I just prefer the expression form syntax