2010-08-20 76 views
51

什么VS项目选项“注册COM互操作”实际上做了什么?因为当我使用这个选项启用我的库时,我可以从VBScript调用我的库上的CreateObject。但是,如果我没有这个构建,然后手动运行regasm的CreateObject失败。所以我想知道 - VS2010做什么,我不做?“注册COM Interop”实际上做了什么?

回答

50

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

在64位机器上使用Regasm.exe的错误版本是另一种陷入困境的方法,通常在您的机器上有4个版本。一定要区分32位和64位版本(c:\ windows \ microsoft \ framework vs framework64),他们编写不同的注册表项。你想选择一个与客户端应用程序兼容的。使用两者都可以,.NET代码可以在任何一种模式下运行,但很不寻常。并区分v2.0.50727(.NET 2.0到3.5SP1)和v4.0版本。选择正确的Visual Studio命令提示符是战斗的一半。

+3

谢谢!我使用/ codebase选项,但显然使用64位而不是32位版本。显式使用32位版本,并像魅力一样工作。 – hackerhasid 2010-08-22 20:23:46

+0

请注意,使用这两个版本是可以接受的,.NET代码可以以任何方式运行。 – 2017-12-11 13:27:19