VS项目选项“注册COM互操作”到底是做什么的?因为当我使用此选项构建我的库时,我可以从VBScript上调用我的库中的CreateObject。但如果我没有这个构建然后手动运行regasm CreateObject失败。所以我想知道 - VS2010做了什么,我没做什么?
答案 0 :(得分:55)
与使用/ 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命令提示符是成功的一半。