Our flagship PB Classic desktop application relies more and more on COM InterOp bridged .NET functionality. Our bi-monthly release cycle includes changes to both PB and associated .NET code We formerly deployed .NET code into the GAC. But when keeping multiple releases in sync proved impossible (PB can't distinguish between strong named folders) we switched to .exe.manifest driven side-by-side deployment. This mechanism works flawlessly and seamlessly. Multiple releases can co-exist in a CLIENT RUNTIME workstation environment.
We are even able to keep our IDE based PB Dev time Runs GAC-less by installing assemblies and their dependencies side-by-side in the PowerBuilder 2017 folder (PB.exe is the running application when running from the IDE).
BUT
Here are issues we are encountering. Wondering if there are fixes or possible work-arounds
Since each Release has its own unique .NET Assembly context, we need to swap the .NET assembly context in and out of the PB 2017 folder when changing workspaces.
1) The IDE does NOT release OLEObject (even after Disconnect and Destroy) following an IDE run. It keeps the assembly locked until the IDE is shut down. We can't over write or delete assemblies following a run until the IDE is restarted. This is an IDE flaw.
2) There is no IDE hook to automatically run an external BAT or configuration process when a workspace is changed. Context changing has to be done outside of PB. I wrote an app object Open script to do the swap on startup in an IDE run - but it often fails due to issue 1 (locked object)
3) Since there is only one PB.EXE, it is potentially confusing to run multiple IDE instances simultaneously in different workspace contexts
Anyone have insight or prior experience that might shed light on our situation?
Thanks
Yakov