我试图将.NET DLL作为COM类公开,并且可以从非.NET语言(如VBA,C ++或Delphi)访问。
我创建了我的C#DLL就好了,我能够将它作为COM组件在我的测试服务器上注册:
C:\ Windows \ Microsoft.NET \ Framework \ v4.0.30319> regasm c:\ inst \ MyComComponent.dll / codebase
Microsoft(R).NET Framework程序集注册实用程序4.0.30319.1
版权所有(C)Microsoft Corporation 1998-2004。保留所有权利。RegAsm:警告RA0000 :使用/ codebase注册未签名的程序集可能会导致程序集干扰可能安装在同一台计算机上的其他应用程序。 / codebase开关仅用于签名程序集。请给你的集会一个强有力的名字并重新注册。
已成功注册的类型
好的,它有效 - 但它会抛出那个丑陋的警告,所以我去为我的类库创建了一个*.snk
文件
sn -k MyComComponent.snk
我将此*.snk
文件添加到我的项目属性中(在“签名”下)。它编译得很好,但当我将它转移到我的测试服务器并尝试重新注册它时,我得到了这个:
请原谅!?!?!?这里发生了什么 - 以及如何解决它?C:\ Windows \ Microsoft.NET \ Framework \ v4.0.30319> regasm c:\ inst \ MyComComponent.dll / codebase
Microsoft(R).NET Framework程序集注册实用程序4.0.30319.1
版权所有(C)Microsoft Corporation 1998-2004。保留所有权利。RegAsm:错误RA0000 :无法加载“c:\ inst \ MyComComponent.dll”,因为它不是有效的.NET程序集