Mark
2010-04-28 18:34:01 UTC
Hi...
We have a number of .net classes exposed as COM interop, and I've been asked
to look into versioning them so we can have multiple versions running on the
same system.
Looking at it though, the [ProgId()] attribute doesn't seem to incorporate
the concept of versioning at all. Neither does regasm.
Unlike an unmanaged COM object where you could specify the version-specific
progid and define which version a non-specific progid should go to, I don't
see analogs in .net interop.
If I build the classes with different versions, and regasm both of them I
end up with 1 non-version specific progid. And when I find the InProcSvr32
key, I see sub-keys for both versions.
But trying to instantiate the object always just gets the newest one.
How does one support multiple versions of .Net COM interop?
Thanks
Mark
We have a number of .net classes exposed as COM interop, and I've been asked
to look into versioning them so we can have multiple versions running on the
same system.
Looking at it though, the [ProgId()] attribute doesn't seem to incorporate
the concept of versioning at all. Neither does regasm.
Unlike an unmanaged COM object where you could specify the version-specific
progid and define which version a non-specific progid should go to, I don't
see analogs in .net interop.
If I build the classes with different versions, and regasm both of them I
end up with 1 non-version specific progid. And when I find the InProcSvr32
key, I see sub-keys for both versions.
But trying to instantiate the object always just gets the newest one.
How does one support multiple versions of .Net COM interop?
Thanks
Mark