C# 避免更改对COM加载项的引用

C# 避免更改对COM加载项的引用,c#,.net,vba,com,excel-addins,C#,.net,Vba,Com,Excel Addins,我使用COM插件已经有几年了,我观察到新版本常常是导致严重问题的原因,包括Excel启动时的崩溃或使用COM组件时的崩溃 据我所知,这是由于内部Excel管道缓存有关XLS/XLSX/XLA/XLAM文件中的COM加载项的一些信息,这些信息与其新版本不匹配:例如,如果API中添加了新方法,或者方法中添加了新参数 这真的很烦人,因为它迫使我们删除VBA编辑器工具->引用菜单中的引用,关闭弹出窗口,然后重新添加它们,这会迫使Excel与加载项的当前状态重新同步 一个简单的修复方法是为每个分布式工作簿

我使用COM插件已经有几年了,我观察到新版本常常是导致严重问题的原因,包括Excel启动时的崩溃或使用COM组件时的崩溃

据我所知,这是由于内部Excel管道缓存有关XLS/XLSX/XLA/XLAM文件中的COM加载项的一些信息,这些信息与其新版本不匹配:例如,如果API中添加了新方法,或者方法中添加了新参数

这真的很烦人,因为它迫使我们删除VBA编辑器工具->引用菜单中的引用,关闭弹出窗口,然后重新添加它们,这会迫使Excel与加载项的当前状态重新同步

一个简单的修复方法是为每个分布式工作簿在打开的工作簿上添加一个钩子,以自动删除它(如果存在),然后将每个引用添加回


你还有其他/更好的主意吗?

Hmya,它应该会失败。使用旧版本的类型库和新版本的代码运行外接程序没有意义,也无法工作。如果这很烦人,那么就写一个SOP,这样更新参考资料就不是你的工作了。谢谢你的回答@HansPassant。TLB是用新的DLL部署/注册的,所以我不明白这怎么会是个问题。你说的SOP是什么意思?