关于ASP中调用.NET DLL的三种参考方案

来源:互联网  作者:好学IT学院整理
摘要:.NET的dll已经不是严格意义上的动态连接库了,而是一个类或者类库。我们可以通过COM包装器(COM callable wrapper (CCW))来将.net的dll再次包装,通过这个中间介质来实现相应的功能。…

【参考方案一】

.NET的dll已经不是严格意义上的动态连接库了,而是一个类或者类库。它是不能直接在ASP、VB 等其它的应用环境中使用的。

我们可以通过COM包装器(COM callable wrapper (CCW))来将.net的dll再次包装,通过这个中间介质来实现相应的功能。

以下是一个小例子,供大家参考。

1. 在.net Visual Studio 中新建一个Class项目。

2. 在项目中新添加一个类,代码如下:

using System;
namespace ClassLibrary1
{
  //定义接口,这点很重要 (此接口中的方法与COM组件中的方法一致)
  public interface iClass1
  {
  string   test();
  }
 public class Class1 : iClass1
 {
   private string t = "";
   //实现接口中的方法
   public string   test() 
   {
   return "hello,it.hxw.red.ok!";
  }
 }
}

3.在.NET命令行窗口中,创建密钥对。

   可以用.net 自带的工具:sn.exe 来创建密钥对。如:SN –k testDll.Keys

4. 创建强命名程序集(Strong Name Assembly)

   在AssemblyInfo.cs文件中,添加[assembly: AssemblyKeyFile(@"c:\test.keys")]属性

5. 编译整个项目,生成ClassLibrary1.dll (此DLL可在 \bin\Debug 路径下找到。)

6. 在.NET命令行窗口中,生成类型库

tlbexp ClassLibrary1.dll /out:ClassLibrary1.tlb

7. 在.NET命令行窗口中,注册装配件

regasm /tlb:ClassLibrary1.tlb ClassLibrary1.dll

8. 在.NET命令行窗口中,将.NET装配件安装到全局装配件缓存(GAC)中
  gacutil /i ClassLibrary1.dll

9. 在asp中测试

 <%
   SET s = CreateObject("ClassLibrary1.Class1")
   Response.Write(s.test())
   %>

这样就能看到调用后的效果了。  

【相关文章】好搜一下
VS项目生成时如何自动复制文件包到指定目录

VS项目生成时如何自动复制文件包到指定目录

在使用VS2010等系列版本进行项目开发时,往往需要在项目生成时将.dll包、.…