"注册COM Interop"实际上做了什么?

hac*_*sid 57 com-interop visual-studio-2010 visual-studio

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

Han*_*ant 58

它与使用/ 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命令提示符是成功的一半.

  • 谢谢!我使用的是/ codebase选项,但它显然使用的是64位而不是32位版本.明确使用32位版本,工作就像一个魅力. (3认同)