2013-06-27 34 views
2

我试图在.NET 4.0中创建一个32位COM对象。 COM对象的使用者是一个简单的JScript。在Visual Studio中注册Com Interop选项但直接调用Regasm不会

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

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

C:\Windows\Microsoft.NET\Framework\v4.0.30319\regasm ComTest.dll /codebase /tlb:ComTest.tlb 

由于这是一个32位汇编,我小心地使用32位regasm.exe。这告诉我它注册成功。我确实收到了使用/codebase选项的警告,告诉我我可能正在使用现有名称空间,但这在部署环境中不成问题。

但现在,当我走在我的JScript中创建我的对象,我得到

Could not create object named "COMTest". 

是不是有什么特殊的Visual Studio是这样做,被正确的注册它说我失踪?

如果可能,我宁愿不必签署大会。

回答

2

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

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

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

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

相关问题