“注册 COM 互操作”实际上是做什么的?

68

"注册 COM 互操作" 在 VS 项目选项中到底是什么?当我启用此选项构建我的库时,可以从 VBScript 中调用 CreateObject。但如果我不启用此选项,然后手动运行 regasm,CreateObject 将失败。所以我想知道,VS2010 做了什么我没有做的事情?

1个回答

70

它的作用与使用带有/tlb/codebase选项的Regasm.exe运行相同。 /codebase选项可能是你忘记的选项。Regasm喜欢假设您已将DLL放入GAC中,并在您没有这样做时生成警告。 GAC确实是避免DLL Hell的非常好的方法,总是一个COM问题。但不适用于您的开发计算机,在开发和测试代码时不想污染GAC。这仅在用户的计算机上很重要,该计算机可能会暴露于多个版本。

在64位计算机上使用错误版本的Regasm.exe是遇到麻烦的另一种方式,您的计算机上通常有4个版本。请务必区分32位和64位版本(c:\windows\microsoft\frameworkframework64),它们编写不同的注册表键。您需要选择与客户端应用程序兼容的版本。同时使用两种版本也可以,.NET代码可以在任何模式下运行,但这相当不寻常。选取正确的Visual Studio命令提示符是解决问题的关键。


4
谢谢!我一直在使用/codebase选项,但显然它使用的是64位而不是32位版本。明确地使用32位版本后就可以完美解决了。 - hackerhasid
1
请注意,同时使用两个版本是可行的,.NET代码可以以任何一种方式运行。 - Hans Passant

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