C#ComVisible DLL没有注册

时间:2012-06-27 23:07:19

标签: events com interface smtp windows-server-2003

我正在为运行Windows 2003服务器的人工作。他们希望我创建一个SMTP接收器,它可以分类我们想要发送消息的数据库和表。它们在此服务器上没有交换,只有默认的虚拟SMTP服务器。

我已经创建了一个类,我认为应该在SMTP服务器onarrival事件发生时触发。我在注册我的课时遇到了问题,但是当我运行RegAsm / regfile时,我得到一个“警告,RA0000:不会发生注册,没有注册类型。”如果我用/ TLB运行RegAsm它会告诉我类型已注册,但是在全局注册表中没有出现类,并且当邮件发送到服务器时我的类没有被调用。对于我做错了什么,我有点不知所措。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.InteropServices;


namespace SMTPSink
{
    [Guid("????-????-?????-????")]
    [ComVisible(true)]
    [ProgId("SMTPSINK")]
    public class SMTPSink : CDO.ISMTPOnArrival
    {
        SMTPSink()
        { }

        void CDO.ISMTPOnArrival.OnArrival(CDO.Message Message, ref CDO.CdoEventStatus EStatus)
        {
            //Simple test to see if this fires on mail arrival
        }
    }
}

1 个答案:

答案 0 :(得分:2)

您忘了将构造函数设为公开。导出不具有[noncreatable]类型库属性的coclass时需要。修正:

    public SMTPSink()
    { }

如果它没有做任何有用的事情,就省略它。