我喜欢将COM-Class从2.0迁移到4.0。您是否还建议为类和不同的ProgId生成新的guid?
旧的课程将不再使用。我知道我必须为mscorlib的新路径重新注册Class。
MS-Access使用CreateObject创建我的COM-Server类的实例,我的COM-Object使用DI加载一些其他类(dot.net 2.0和将来的4.0)
答案 0 :(得分:7)
接口定义更改时,您只需使用新的GUID。当它们保持不变时,新的COM服务器将替换现有的服务器。并且不必重新编译使用它的客户端代码。当您做更改它们时,它们可以并排生活,但客户端代码必须明确重新编译才能使用新的。
请注意,.NET 4.0中的进程内并行CLR版本支持与此相关。您的COM服务器可以在绑定.NET 4.0 CLR的程序中使用,即使COM服务器仍然绑定2.0 CLR。从技术上讲,您不必更新它。
答案 1 :(得分:1)
我不明白你为什么要改变Guid或者progid。这意味着您必须重新编译此引用的所有内容。
只要你坚持二进制兼容性,你的合同的实现的框架版本并不重要,简单来说就是一个实现细节
答案 2 :(得分:0)
我迁移到DOT.net 4.0并进行了一些测试。 DOT.net 4.0可以使用2.0程序集,对我的DI场景没问题。
我唯一需要做的就是更新我的安装程序。原因是,因为HKEY_CLASSES_ROOT \ CLSID {COMGuid}控制了它必须使用的运行时版本。
“RuntimeVersion”= “v4.0.30319”