在注册和为COM互操作gac程序集时,顺序是否重要?

5

在为COM互操作注册.NET程序集时,我目前按以下顺序执行两个步骤:

regasm /tlb:MyDll.tlb Mydll.dll

gacutil /i Mydll.dll

我使用regasm来注册COM的类型库,使用gacutil将程序集安装到全局程序集缓存中。这两个动作的顺序是否重要?另外,当我更新我的dll时,我需要取消注册并重新注册它,从gac卸载并重新安装它,两者都需要还是都不需要?

1个回答

5

顺序很重要吗?

不是。

当dll改变时,需要在GAC中重新安装吗?

需要。

当dll改变时,需要重新注册COM吗?

这取决于情况。如果你在COM dll中添加了新类型,则需要重新注册。如果你只是在现有类型的一些内部内容上进行了少量更改,则不需要。但为了保险起见,请始终取消注册并重新注册。


感谢您的回答。我已经进行了注销和重新注册以及取消 GAC 和重新 GAC 的过程。VB6 看到了我添加的新类型,但出于某种原因,在运行时它会抛出找不到指定类型的错误。这可能是什么原因呢? - Ben McCormack
通常来说,VB6/VBA 的错误信息并不是很详细。你可以尝试不将程序集添加到 GAC 中,而是使用 /codebase 开关通过 regasm 注册它们,看看是否有所帮助。 - Jakob Christensen
我以前已经成功使用了/codebase,但我仍然对它的工作原理有疑问。我从这个问题开始了另一个问题:http://stackoverflow.com/questions/3062754/do-i-need-to-force-the-gac-to-reload-an-assembly-is-this-possible - Ben McCormack
FYI - 我只需保存我的VB6项目并重新启动IDE,就成功地使一切恢复正常。 - Ben McCormack

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接