创建并注册一个COM服务器对象
本文关键字:一个 COM 服务器 对象 注册 创建 | 更新日期: 2023-09-27 18:16:11
我一直在遵循一组教程(就像这一个)来创建一个简单的COM服务器对象。
假设我有一个简单的hello world:
[ComVisible(true)]
[Guid("392930B3-9CD0-4247-8C69-83168D1C8F77")]
[ClassInterface(ClassInterfaceType.None)]
[ProgId("nathanr.HellowWorldCom")]
class HelloWorldCom : IHelloWorldCom
{
public int HelloWorld()
{
Console.WriteLine("Hello World!");
return 1;
}
}
使用同样简单的接口:
[ComVisible(true)]
[Guid("C08205BE-1393-4070-AE57-FA47F0D653C3")]
interface IHelloWorldCom
{
[DispId(1)]
int HelloWorld();
}
当然,不能忘记AssemblyInfo.cs
文件:
...
[assembly: ComVisible(true)]
[assembly: AssemblyKeyFile("HelloWorldCOM.snk")]
...
问题是当我构建HelloWorldCom.dll
并尝试注册它时,regasm
只是向我伸出舌头:
RegAsm : warning RA00000 : No types were registered.
为了覆盖我的基础,我打开了Regedit
并搜索了ProgID
。它不在那里,老实说,这并不令人惊讶。
我错过了一些明显的东西吗?
整个测试项目是一个更大的(实际上很有用的)设置的一部分,该设置也无法注册。
这个答案很长:add public
public class HelloWorldCom : IHelloWorldCom
可能有几个问题:
-
您选择的。net框架不正确。在我的情况下,我试图注册dll与2.0框架,而不是64位4.0框架
-
您的DLL未公开暴露。
希望这能解决你的问题。
欢呼