1 新建类库MyTest
2 右击项目“MyTest”-》属性-》生成-》勾选“为COM互操作注册”
3 打开 AssemblyInfo.cs 文件 修改 [assembly: ComVisible(true)]
using System;
using System.Runtime.InteropServices;
namespace TestDll
{
[Guid("93FFB6A2-4B32-4546-B19F-C3D5DB22E57F")]
public interface ISample{
[DispId(0)] string About();
[DispId(1)] int Add(int a,int b);
}
public class Sample : ISample{
public Sample(){}
public string About() {return "欢迎访问 http://www.csdn.net";}
public int Add(int a, int b) {return a+b;}
}
}
到C盘中查找 sn.exe,regasm.exe gacutil.exe 文件,复制到工程目录。
3、运行cmd命令,打开一个控制台窗口,进入Test工程的目录,进入 Obj/Debug目录
4、运行 sn -k Test.snk (sn.exe这个文件在 D:/Program files/Microsoft Visual Studio .NET 2003/SDK/v1.1/Bin)这样就生成了一个 Test.snk文件
5、{
1.点击该项目的属性
2.点击名为 签名 的选项卡
3.在为程序集签名那里打勾
4.然后选择新建snk文件或者浏览现有的snk文件
}
6、编译这个工程,生成 Bin/Debug/Test.dll,在控制台窗口进入这个目录
7、输入下面的命令:regasm /tlb:Test.tlb Test.dll 注册DLL,并生成一个tlb文件
tlb是给VB开发使用的,可以不要这个
8、继续在控制台里运行这个:gacutil /i Test.dll 把这个Dll加入全局Assembly Cache(实际上可以不要,在RegAsm里面已经自动加入了,为了保险,我还是操作一次)
9、在ASP里面引用这个,代码如下:
<%
Dim o : Set o=Server.CreateObject("Test.Sample")
Response.Write o.About() & "<br />"
Dim a,b : a=123 : b=456
Response.Write a & " + " & b & "=" & o.Add(a,b)
Set o=Nothing
%>
如果提示:
Failed to load 'C:\Test\test.dll' because it is not a valid .net assambly
2 右击项目“MyTest”-》属性-》生成-》勾选“为COM互操作注册”
3 打开 AssemblyInfo.cs 文件 修改 [assembly: ComVisible(true)]
using System;
using System.Runtime.InteropServices;
namespace TestDll
{
[Guid("93FFB6A2-4B32-4546-B19F-C3D5DB22E57F")]
public interface ISample{
[DispId(0)] string About();
[DispId(1)] int Add(int a,int b);
}
public class Sample : ISample{
public Sample(){}
public string About() {return "欢迎访问 http://www.csdn.net";}
public int Add(int a, int b) {return a+b;}
}
}
到C盘中查找 sn.exe,regasm.exe gacutil.exe 文件,复制到工程目录。
3、运行cmd命令,打开一个控制台窗口,进入Test工程的目录,进入 Obj/Debug目录
4、运行 sn -k Test.snk (sn.exe这个文件在 D:/Program files/Microsoft Visual Studio .NET 2003/SDK/v1.1/Bin)这样就生成了一个 Test.snk文件
5、{
1.点击该项目的属性
2.点击名为 签名 的选项卡
3.在为程序集签名那里打勾
4.然后选择新建snk文件或者浏览现有的snk文件
}
6、编译这个工程,生成 Bin/Debug/Test.dll,在控制台窗口进入这个目录
7、输入下面的命令:regasm /tlb:Test.tlb Test.dll 注册DLL,并生成一个tlb文件
tlb是给VB开发使用的,可以不要这个
8、继续在控制台里运行这个:gacutil /i Test.dll 把这个Dll加入全局Assembly Cache(实际上可以不要,在RegAsm里面已经自动加入了,为了保险,我还是操作一次)
9、在ASP里面引用这个,代码如下:
<%
Dim o : Set o=Server.CreateObject("Test.Sample")
Response.Write o.About() & "<br />"
Dim a,b : a=123 : b=456
Response.Write a & " + " & b & "=" & o.Add(a,b)
Set o=Nothing
%>
如果提示:
Failed to load 'C:\Test\test.dll' because it is not a valid .net assambly
因为使用了NET FrameWork 2.0的regasm文件,如果你开发的dll平台版本是针对.NEt FrameWork4.0或者其他版本的话,则你必须在本地安装.NET Framework,你可以尝试把你的dll平台设置为.NET Framework2.0,这样注册就没有什么问题的。或者从.NEt FrameWork4.0目录中拷备regasm文件出来。
============================================================================================================
在其它机器上注册方法:
1.从注册机上COPY出regasm,注册DLL
2.注册参数:RegAsm /codebase test.dll
如果不加 /codebase,会出现
Server 对象 错误 'ASP 0177 : 80070002'
Server.CreateObject 失败
/test_.asp,行 3
80070002