在Visual Studio中使用Com Interop选项注册有效,但直接调用Regasm则不起作用



我正试图在.NET 4.0中创建一个32位COM对象。COM对象的使用者是一个简单的JScript。

当我将Visual Studio的"注册COM互操作"设置的复选框设置为true时,一切都会正常工作。我能够在我的JScript中创建COM对象并运行我所有的测试代码。

但是,我希望能够在没有Visual Studio的32位计算机(运行.NET 4.0)上部署它。因此,我有一个简单的install.bat文件来注册DLL:

C:WindowsMicrosoft.NETFrameworkv4.0.30319regasm ComTest.dll /codebase /tlb:ComTest.tlb

由于它是一个32位的程序集,所以我要小心使用32位的regasm.exe。这告诉我它注册成功。在使用/codebase选项时,我确实收到了一条警告,告诉我可能会占用现有的命名空间,但这在部署环境中不会成为问题。

但现在,当我在JScript中创建对象时,我会得到

Could not create object named "COMTest".

Visual Studio正在做什么特别的事情来正确注册我丢失的内容吗?

如果可能的话,我宁愿不必在大会上签字。

我发现了这个问题。(当然,只有在我发布到SO之后…)

对象注册得很好。问题是COM对象的构造函数中缺少依赖项。

将初始化代码从构造函数移到Initialize()方法暴露了该问题。

Visual Studio工作是因为它运行的目录。

最新更新