我是否需要强制GAC重新加载程序集?这可能吗?

时间:2010-06-17 14:49:52

标签: .net com interop assemblies gac

我已经将类型添加到我用于COM互操作的.NET类中。为了使它与我的VB6应用程序一起工作,我取消注册了DLL并重新注册它(使用regasm)。然后我卸载并重新安装到GAC(使用gacutil)。

这些类型显示在VB6对象资源管理器中,但是当我在VB6 IDE中运行应用程序时,它会在实例化新类型的行上中断,并显示错误:Automation Errror - The System cannot find the file specified

我认为这很奇怪,因为我已经更新了GAC,所以我从GAC卸载了 dll并得到了完全相同的错误,这似乎表明旧版本的dll已经是在内存中需要“重新加载”,以便较新的DLL在内存中。这是可能的,如果是这样,我需要做什么?

2 个答案:

答案 0 :(得分:1)

我怀疑regasm.exe正在为您的对象添加COM条目,并在它们是GAC之前将它们指向程序集的位置。通常,这不应该有所作为,因为GAC将在所有情况下都获胜。但可能是COM互操作的一个区别。

尝试挖掘注册表,查看COM条目指向COM接口的位置,并确保程序集存在于该位置。

答案 1 :(得分:0)

尝试保存VB6项目,关闭IDE并重新打开项目。在这种情况下,这对我有用。