"注册 COM 互操作" 在 VS 项目选项中到底是什么?当我启用此选项构建我的库时,可以从 VBScript 中调用 CreateObject。但如果我不启用此选项,然后手动运行 regasm,CreateObject 将失败。所以我想知道,VS2010 做了什么我没有做的事情?
"注册 COM 互操作" 在 VS 项目选项中到底是什么?当我启用此选项构建我的库时,可以从 VBScript 中调用 CreateObject。但如果我不启用此选项,然后手动运行 regasm,CreateObject 将失败。所以我想知道,VS2010 做了什么我没有做的事情?
它的作用与使用带有/tlb和/codebase选项的Regasm.exe运行相同。 /codebase选项可能是你忘记的选项。Regasm喜欢假设您已将DLL放入GAC中,并在您没有这样做时生成警告。 GAC确实是避免DLL Hell的非常好的方法,总是一个COM问题。但不适用于您的开发计算机,在开发和测试代码时不想污染GAC。这仅在用户的计算机上很重要,该计算机可能会暴露于多个版本。
在64位计算机上使用错误版本的Regasm.exe是遇到麻烦的另一种方式,您的计算机上通常有4个版本。请务必区分32位和64位版本(c:\windows\microsoft\framework与framework64),它们编写不同的注册表键。您需要选择与客户端应用程序兼容的版本。同时使用两种版本也可以,.NET代码可以在任何模式下运行,但这相当不寻常。选取正确的Visual Studio命令提示符是解决问题的关键。