26 Apr 12 13:26
There are really only two solutions, I believe, when dealing with this. Either you reference on your solution each version of Extra and then write a version switch call routine for each method you need to call (typically done at the loading of your application and the wrapper would persist which version was called). The other solution is an IPC (Interprocess Communication) solution where your reference is to the other process and you call (communicate) with that process in a uniform way and then it would ref the right version because it would be based on the client computer/server. This second solution takes more time to setup, but because I know nothing of your environment or constraints its the most I can really help with.
I use IPC here for different systems and its honestly somewhat of a pain to get setup but once it is there it works just fine. You could consider the following ways for IPC; Shared memory map, GNP (Named pipe), service, WCF, sockets, etc.. Each are setup differently and have different pros/cons. I typically lean to Sockets and Shared memory maps, but that is because of some constraints here. You might consider a WCF on local.
So you might ask how could you do this in practice? Here are three options
1.) You can build a single solution to target each version. Easy way to test may not work depending on attachmates install, it may not allow you to have multiple instances of attachmate on one pc.
2.) You use an IPC solution AND you build a .net solution for each version and your installer determines which version to put on your client machine target.
3.) You use an IPC solution AND you deploy your code to the target and compile on the target machine.
Here I use #3 but for different reasons as there are many COM components *we touch many different backend systems* so the combinations involved in #2 just don't make sense. and IPC is easy enough to do anyway I use sockets and shared memory maps.