好学IT学院:IT信息技术分享交流平台
标签:C#  来源:互联网  作者:佚名  发布时间:2009-07-05  ★★★加入收藏〗〖手机版
摘要:目的:为了能使下面代码可以执行 % setdr=Server.CreateObject(”ComClassLibrary.ComClass“) response.writedr.NewGUID() %>…

目的:为了能使下面代码可以执行
<%
set dr=Server.CreateObject(”ComClassLibrary.ComClass“)
response.write dr.NewGUID()
%>

简单的例子:

一、组件注册

using System;
using System.Collections.Generic;
using System.Text;
using System.Runtime.InteropServices;
namespace ComClassLibrary
{
  [ComVisible(true), Guid("17B55C63-C5F2-436a-91FF-F9EF656AAF2A")]
  public class ComClass
  {
      public ComClass()
      {
      }
      public string NewGUID()
      {
          return Guid.NewGuid().ToString();
      }
  }
}

此外还需要修改AssemblyInfo.cs (以下项目:有则修改,无则追加)

using System.Security;
[assembly: AllowPartiallyTrustedCallers()]
[assembly: ComVisible(true)]
[assembly: Guid("1499256f-53e7-464e-86be-42cb0128e1d3")]

以上的红色部分属于GUID,针对与自己写的程序,最好使用guidgen.exe重新生成
最后还需要注册本动态库:  Regasm.exe ComClassLibrary.dll
Regasm.exe 应该位于 C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\
之所以是v2.0.50727是因为我这里是用的 .Net 2.0
卸载的话用 :  Regasm.exe /u ComClassLibrary.dll

二、安装到全局程序集缓存

1.Studio 2005 .net 命令提示,执行sn -k 后加输出的DLL所在目录,如sn -k 文件路径\test.snk,之后会生

2.之后会生成test.SNK文件,打开AssemblyInfo.cs文件,在[assembly: AssemblyKeyFile("")]里填写生成的SNK文件

3.使用gacutil工具将DLL程序集安装到全局程序集缓存中,也是先运行Visual Studio 2005 .net 命令提示,再执行gacutil /i 要注册的DLL的路径

4. 使用regasm工具对程序集进行注册,运行Visual Studio 2005 .net 命令提示,执行regasm /tlb DLL文件