COM-Interop:将.NET Framework版本从2.0更改为4.0 - 我是否也应该更改Guids?

时间:2010-10-19 13:58:16

标签: c# .net com activex com-interop

我喜欢将COM-Class从2.0迁移到4.0。您是否还建议为类和不同的ProgId生成新的guid?

旧的课程将不再使用。我知道我必须为mscorlib的新路径重新注册Class。

MS-Access使用CreateObject创建我的COM-Server类的实例,我的COM-Object使用DI加载一些其他类(dot.net 2.0和将来的4.0)

3 个答案:

答案 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”