我需要重写我们其中一台服务器上安装的以下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对象看起来像这样:
编辑
在运行regasm命令后,我应该能够在组件服务中看到COM对象吗?
regasm C:\...\SSDSCommunicator.dll /CodeBase
set obj = createObject("SSDSCommunicator.EmailClass")
时,我遇到了一个ActiveX组件无法创建对象800A01AD错误。我也无法像上面的截图中看到该对象。 - woggles