对于在 Web 中注册 .NET COM 对象的每个示例,我都看到了完成这项工作的工具“regasm”。每个人都这样做!!!
但它从来没有为我工作!我厌倦了试图克服它!我唯一的解决方案是 regsvr32,它需要一个我只能在 C++ 中定义的函数。
请告诉我为什么它不能正常工作!!!
考虑到它不适用于我的所有 4 台计算机,外加 3 台运行 Windows 7 到 2000 的虚拟机,任何人都可以向我展示一个 regasm 调用的工作示例吗?我觉得我是个白痴。
最佳答案
无法使用 Regsvr32.exe 注册 [ComVisible] .NET 程序集。它没有 Regsvr32 所需的 DllRegisterServer 入口点。您必须使其与 Regasm.exe 或安装项目一起使用。当您将服务器部署到另一台机器时,后者是必需的。
故障模式很少。除了:
忘记使用/codebase 选项。如果您不将程序集部署到 GAC,则这是必需的,这是您不应该在开发机器上执行的操作。
使用错误版本的 Regasm.exe。在 64 位机器上有两个,如果客户端代码是 64 位,Framework64 目录包含您必须使用的那个。
从未提升权限的命令提示符运行它。 Regasm.exe 写入注册表的 HKLM 配置单元,这是 UAC 主动阻止的。这是 Vista 和 Win7 上的问题。
当然也有可能只是让程序集出现严重错误。就像不制作一个或多个接口(interface)和/或类 [ComVisible]。
https://stackoverflow.com/questions/5136638/