c# - 创建和注册 COM 服务器对象 .NET

标签 c# com

我一直在按照一组教程 (like this one) 创建一个简单的 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。它不在那里,老实说这并不奇怪。

我是否漏掉了一些明显的东西?

整个测试项目是一个更大的(实际上有用的)设置的一部分,该设置也未能注册。

最佳答案

这将是一个很长的答案:添加public

 public class HelloWorldCom : IHelloWorldCom

关于c# - 创建和注册 COM 服务器对象 .NET,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16822485/

相关文章:

c# - 当线程已经终止(.NET 5/Core)时,Thread.Join 方法并不总是返回相同的值

c++ - 设置 com 类的数组会触发读取访问

c# - 在后台线程中释放 COM 对象

python - 如何以编程方式使用 Microsoft Word 的拼写/语法检查器?

c# - WinForms 中的 RX 和 Model-View-Presenter

c# - lambda 内连接并选择全部

c# - 我可以将这段代码简化为一行吗

c# - 从 StackFrame 获取真实类型的泛型方法

delphi - 如何实现类型安全的 COM 枚举?

c# - 使用 COM 组件时出错