У меня на одном из наших серверов установлен следующий COM-объект, который мне нужно переписать ... в некоторых устаревших кодах этот объект используется следующим образом:
Set oEmail = CreateObject("SSDSCommunicator.EmailClass")
oEmail.Send(szFrom, szRecipients, szSubject, szEmailBody, SMTPServer, szErr, "", , , , True)
Я следовал примеру в этом ответе, но я пытаюсь зарегистрировать компонент COM.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web.Mail;
using System.Runtime.InteropServices;
namespace SSDSCommunicator
{
[InterfaceType(ComInterfaceType.InterfaceIsDual), Guid("DB38A91C-9EB6-4472-9A49-40722431E096")]
public interface IEmailClass
{
void launch();
bool Send(string szFrom, string szTo, string szSubject, string szMessage, string szSMTPServer, ref object szError, string szAttachments = "", string szReplyTo = "", string szCC = "", string szBCC = "", bool bHTMLBody = false);
}
[ClassInterface(ClassInterfaceType.None), Guid("A00C16DA-1791-4A3A-8D16-4765A9FAD060"), ProgId("SSDSCommunicator.EmailClass")]
public class EmailClass : IEmailClass
{
private string path = null;
public void launch()
{
Console.WriteLine("I launch scripts for a living.");
}
public bool Send(string szFrom, string szTo, string szSubject, string szMessage, string szSMTPServer, ref object szError, string szAttachments = "", string szReplyTo = "", string szCC = "", string szBCC = "", bool bHTMLBody = false)
{
...
}
}
}
Проект строится успешно. Как мне зарегистрировать dll как COM-объект, чтобы старый код VB6 работал?
Я поставил галочку в регистре COM-взаимодействия и Сделал сборку COM видимой в настройках проекта.
Мне не повезло с regsvr32 (точка входа не найдена) или с regasm ...
COM-объект выглядит так на старом сервере:
Редактировать
Можно ли увидеть COM-объект в службах компонентов после выполнения команды regasm?
regasm C:\...\SSDSCommunicator.dll /CodeBase