C# ComVisible DLL не регистрируется
Я работаю на кого-то под управлением Windows 2003 Server. Они хотят, чтобы я создал приемник SMTP, который может классифицировать, в какую базу данных и таблицу мы хотим отправлять сообщения. У них нет обмена на этом сервере, только виртуальный SMTP-сервер по умолчанию.
Я создал класс, который, я думаю, должен срабатывать, когда происходит событие onarrival SMTP-серверов. У меня проблема с регистрацией моего класса, однако, когда я запускаю RegAsm /regfile, я получаю "Предупреждение, RA0000: никакая регистрация не произойдет, нет типов для регистрации". если я запустил RegAsm с /TLB, он скажет мне, что типы зарегистрированы, но по классам не отображается в глобальном реестре, и мой класс не вызывается, когда почта отправляется на сервер. Я немного в растерянности относительно того, что я делаю неправильно.
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 ответ
Вы забыли сделать конструктор публичным. Требуется для экспорта кокласса, у которого нет атрибута библиотеки типов [noncreatable]. Fix:
public SMTPSink()
{ }
Или просто опустите его, если он не делает ничего полезного.