c# 标准 com组件 php 调用,C#创建COM组件,并在ASP、PHP中调用方法

1、新建项目

-- 选择Visual C# - 类库

-- 项目名称:如 SendMailLib

-- 去掉选中项 ”为解决方案创建目录”

-- 修改文件名Class1.cs 为 SendMail.cs (类名称自动更改为 SendMail)

2、修改项目 - 属性

-- 应用程序

目录框架不限制,只要服务器能提供相应的Net版本

-- 生成

配置选择:Release

输出选中:“为COM互操作注册”

-- 签名

SN命令参考目录:C:\Program Files (x86)\Microsoft SDKs\Windows\v8.1A\bin\NETFX 4.5.1 Tools

命令行:sn -k SendMailKey.snk

在当前目录生成snk文件,将该文件copy到项目根目录

选中 ”为程序集签名“,浏览,选择项目文件下的.snk文件

3、  修改 Properties - AssemblyInfo.cs

false 改为 true

[assembly: ComVisible(true)]

4、  编写代码,win7及以上版本,以管理员方式运行,否则在编译时可能提示没有权限

-- Demo --

using System;

using System.Collections.Generic;

using System.Runtime.InteropServices;

using System.Text;

namespace SendMailLib

{

[ComVisible(true)]

[Guid("FAF8401B-8AE4-4161-911C-E800BD50AA40")]

public interface ISendMail

{

void Initialize();

string MailServer { get; set; } //可读写属性

int Port { get; set; }

string Send();

void Dispose();

}

[ComVisible(true)]

[Guid("DE8F5369-C004-4679-985E-F5F37272947D")]

public class SendMail:ISendMail

{

private string _mailServer;

private int _port = 25;

public void Initialize()

{

//throw new NotImplementedException();

}

public string MailServer

{

get

{

return _mailServer;

}

set

{

_mailServer = value;

}

}

public int Port

{

get

{

return _port;

}

set

{

_port = value;

}

}

public string Send()

{

try

{

return "Send";

}

catch (Exception ex)

{

//Console.WriteLine(ex.Message);

return ex.Message;

}

}

public void Dispose()

{

}

}

}

5、添加程序集到全局缓存,以便于在任意位置注册该dll组件

copy SendMail.dll 到 gacutil命令相同的目录

(命令参考目录 C:\Program Files (x86)\Microsoft SDKs\Windows\v8.1A\bin\NETFX 4.5.1 Tools,gacutil运行环境版本不限,示例使用NETFX 4.5.1)

执行:gacutil /i SendMailLib.dll

6、注册组件及类型到注册表

命令行转到regasm对应的目录,这里不需要指定SendMailLib.dll位置,自动从全局缓存获取,

命令参考目录:C:\Windows\Microsoft.NET\Framework64\v4.0.30319

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值