gpt4 book ai didi

.net - 发布新版本的 Tlb 以及何时需要重新引用 Tlb

转载 作者:行者123 更新时间:2023-12-04 20:19:57 25 4
gpt4 key购买 nike

我有一个 C# dll 并使用 regasm 生成了一个 tlb。我已经为使用此 tlb 的用户提供了一个实用程序电子表格。每次发布我们的应用程序的新版本时,tlb 都会取消注册和注册(使用 regasm.exe)。

但是,有时,当用户在新版本之后使用电子表格时,它会引发“activex 组件无法创建实例”错误,恰好在我创建类型对象的代码行上。我只是通过删除和添加 tlb 引用来解决这个问题。 (在vba模式-工具-引用-取消勾选tlb-保存-再添加)。然而,这很痛苦,因为我不能为所有用户这样做。

我做了几个测试来复制这个场景。比如修改dll的版本号重新注册,给接口(interface)增加新的方法重新注册。但在所有情况下,电子表格都可以正常工作,而无需删除并重新添加 tlb 引用。

所以,我很困惑在电子表格中必须重新添加 tlb 作为引用的情况以及可能的原因是什么。任何帮助表示赞赏。

谢谢,
玛尼

最佳答案

这个问题很可能是由于类型库的 UUID 发生了变化,VBA 中的引用失效导致的。

1) 那边有个人写了VBA program to add TLB references and delete invalid ones !

2)这可能与您先卸载旧版本然后安装新版本有关。 RegAsm's manual提到相反的顺序。 VBA 有可能有一些逻辑来自动更新它们,这只适用于 M$ 家伙想到的更新顺序。
另一种可能性是 Excel 在更新期间正在运行,因此它没有在应该更新其引用列表时进行更新。

3) 为了进一步诊断问题,我会使用 procmon.exe。有关 COM 的所有内容都在注册表中查找,因此如果出现错误,您可能会遇到应用程序无法找到某些 UUID 键的情况。

关于.net - 发布新版本的 Tlb 以及何时需要重新引用 Tlb,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9293440/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com