VB调用C# COM+,转

今天公司要求用C#写个验证码组件,让asp可以调用,在网上找了一堆资料,终于给我给搞出来了,因为本人第一次写组件,也是第一次发表文章,所有可能说的不是很好,大家请见谅。

csdn上有这么篇文章,想学习写组件的可以去看看:http://blog.csdn.net/KimmKing/archive/2008/12/04/3445233.aspx,因为本人就是仿照这个写的验证码组件,因为怕上面的文章丢失,我就在这里简单说下创建的过程:

1、创建一类库

2、实现一个类(具体代码下面详写)

3、给文件签名

方法:选择开始菜单中Vistual Studio目录下的Vistual Studio Tools下的Vistual Studio 命令提示。使用sn -k c:\myKey.snk生成签名文件。在项目上右键,点击属性,选择签名,选中为程序集签名,选择myKey.snk文件。

4、生成解决方案

在项目目录的\TestCom\bin\Debug中可以找到TestCom.dll

5、生成tlb类库

在Visual Studio命令提示符下,切换到此目录。

输入tlbexp TestCom.dll /out:TestCom.tlb

6、注册类型库

输入regasm TestCom.dll /tlb: TestCom.tlb /codebase,将类型库导入到注册表。提示成功注册了类型,说明操作成功,此时TestCom .dll可以作为一个com来使用。

7、添加dll到GAC

输入gacutil /i TestCom.dll,将此.net程序集添加到GAC。

这样创建组件的所有工作就完成了。剩下的就是调用了

在vb和net里面调用:导入dll,实例化对象就可以使用了

(Dim a As New TestCom.Class1)a.方法

(TestCom.Class1 aa = new TestCom.Class1())aa.方法

在asp调用:

<%

SET s = CreateObject("TestCom.Class1")

s.test()

%>

以上就是我找到的创建组件的资料,那么现在就开始编写验证码组件的代码吧

首先编写类库:

using System;

using System.Collections.Generic;

using System.Text;

using System.Runtime.InteropServices;

using System.Drawing;

using System.Security;

namespace TestComs

{

[ComVisible(true)]

public interface iClass1

{

string DoCode(int num);

byte[] DoImg(string code);

}

[ComVisible(true)]

[ClassInterface(ClassInterfaceType.AutoDual)]

public class Class1 : iClass1

{

private double PI2;

public Class1()

{

PI2 = 6. ......