2011-07-11 54 views
8

我昨天用C#创建了一个COM对象,导致VS 2010项目(comclass.dll,comclass.pdb和comclass.tlb)的bin/release目录中有三个文件。现在,当我在项目中构建解决方案时,VS会自动在开发PC上为我注册该类,并且访问COM对象及其方法(比方说Powershell)也没有问题。然而,当我的三个文件复制到不同的计算机,并尝试用REGSVR32注册DLL,它告诉我,注册使用VS C#2010创建的COM对象

模块“comclass.dll”已加载,但在入口点中的DllRegisterServer没有被发现。

确保“comclass.dll”是有效的DLL或OCX文件,然后再试一次。

使用regasm与.tlb文件中的/tlb参数给我一个类似的消息。所以我有点难倒了。任何人都知道我应该从这里出发?

回答

11

只需复制DLL(如果你想在你的堆栈跟踪文件路径和行号可选的PDB)。这是你如何注册,和TLB创建:

"%WINDIR%\Microsoft.NET\Framework\v2.0.50727\regasm.exe" comclass.dll /tlb /nologo /codebase 

由于Visual Studio的注册成功,这也许只是工作。如果没有,您也可以在重建时打开“输出”面板,查看Visual Studio如何调用regasm

+0

谢谢乔。 C:\ WINDOWS \ Microsoft.NET \ Framework \ v2.0.50727> regasm c:\ comtest \ comclass.dll/tlb/nologo/codebase 注册成功的类型 导出为'c:\ comtest \ comclass.tlb'的程序集,以及 类型库已成功注册。 正是我想要的。将其放入我的博客中。再次感谢。 – deutschZuid