VB.Net工作笔记001---用ASP调用VB.NET编写的dll_ClassLibrary

    JAVA技术交流QQ群:170933152 

最近做的这个项目真是旧啊。。变态啊。。。为啥想起来用asp去调用vb.net 写的dll。。。天呐。。。

据说,2020年server2008 不再支持asp,2023年server2012 不再支持asp。。。这样也是为了让旧系统能多用几年吧。。

注册的时候做以下补充:

1.前提,对于server2012 系统中要运行的dll,需要先做这个:

  找到sn.exe,可以用everything搜,大体在

c:\program Files(x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX4.6.1 Tools\x64下面,搜的话,有好几个,自己找一个,如果是64位就用64,32位用32的,找到sn.exe执行

sn -k testDll.keys  生成这个testDll.keys的文件,这个名字可以自己定义

生成这个文件后:

在ClassLibrary1这个工程中,打开:

             assemblyInfo.vb

             加上

            <Assembly: AssemblyKeyFile("上面生成的keys文件的路径就是....   .keys")>

然后再编译。下面也有说的

 

1.ClassLibrary1.dll , ClassLibrary1.tlb 只需要这两个文件就可以了

2.注册首先比如把上面两个文件copy到D:\DTS\下面

3.注册:

  这里注意不光是要用regasm注册,还需要gacutil,把dll注册到全局gac中,注册全局gac,会在系统中生成ClassLibrary1这样一个文件夹,可以用everything搜到

C:/Windows/Microsoft .NET/Framework/v4.0.30319/RegAsm.exe D:\DTS\ClassLibrary1.dll /tlb:D:\DTS\ClassLibrary1.tlb coodebase

注册全局gac,用gacutil /i ClassLibrary1.dll注册一下,这样就可以了

 

4.一定要注意,其实我个人试了试,用win10系统的话,只需要用RegAsm.exe,注册一下dll就可以了,但是如果是server2012,

   不仅仅需要用regasm注册,还需要把dll加入全局gac,用gacutil /i ClassLibrary1.dll注册一下

5.注意,所有的操作,启动visual studio也好,启动cmd.exe 也好,一定要用管理员权限,右键管理员运行

--------------

 

好,想用asp调用vb.net dll 得这么做,这个大体写个流程,其他的零碎知识点,后边发博。。

1。用visual studio 写个ClassLibrary1 项目 里面创建一个ComClass1.vb这个文件,创建的时候选择comclass就可以了

      创建的时候一定要用comclass,表示我要做个com组件,注意,这个comclass写的组件可以在asp调用的时候传参数

public Function test(byval teststr as String)as String

return “credream”

end Function

2。编写后,编译

注意编译的时候有道道,这里需要下面几步:

a。编译后的目录里面有:ClassLibrary1.dll , ClassLibrary1.pdb ,ClassLibrary1.tlb ,ClassLibrary1.xml这几个文件

这几个文件都被我copy到比如d:\MySample中了,个人喜好

b。写一个Bat文件:

     比如test.bat

    set p=d:/Mysample

     set w=c:/windows/

   copy %p%.dll %w%ClassLibrary1.dll

   C:/Windows/Microsoft .NET/Framework/v4.0.30319/RegAsm.exe %w%ClassLibrary1.dll /tlb:%w%ClassLibrary1.tlb coodebase

  pause

 注意这里代码都是我手敲的,不要直接复制啊,有可能有问题,大体意思是:

先把ClassLibrary1.dll copy到c盘的windows目录,这步很重要,要不然,用regasm注册不成功,copy之后,用上面目录的

regasm。exe注册这个dll就可以了,其实这里我直接就把ClassLibrary相关的这几个文件都copy到c盘windows中去了

 

注意,上面的注册,其实就向注册表中写了一堆的东西,打开注册表搜ClassLibrary1就能搜到,另外,还把ClassLibrary1.dll

自动的copy到了c盘的某个目录,具体哪个目录,去用everything搜一下就知道

c。然后写个asp调用一下试试,需要把iis打开

<DOCTYPE html>

<html>

<body>

<%

response.write("my first page!!")

set s=Server.CreateObject("ClassLibrary1.ComClass1")

response.write(s.test("ok is  a ok ..."))

%>

</body>

</html>

 

//这里得注意,好像在server2008中,写的时候不需要写Server. 直接写CreateObject就行,写了还出错,在Server2012中,还有win10机器上就需要写这个Server.要不也不对

//顺便说一下,对iis的配置,iis中打开asp,把安全里的,把错误送给浏览器,显示详细错误,打开,还有什么允许父路径,也设为true,ie浏览器上再设置,一下把允许script调试什么的,设置为允许,iis中在error page中,设置成详细错误,asp里面再设置一下允许服务器调试什么的。都打开

这样只要是asp中的VBScript脚本一出错,如果你电脑上安装了visual studio 2017 我装的是2017,就会弹出个框,然后你就可以

debug了。。。

d。试一试行不行,可能不行,很可能不行,就这个我折腾了两天。。。

      再这样弄,如果不行的话,

     aa。首先用sn。exe,用everything搜,找一个最新那个就行,然后用它执行

              sn -k testDll.keys

              这样会生成一个keys文件

   bb。 在ClassLibrary1这个工程中,打开:

             assemblyInfo.vb

             加上

            <Assembly: AssemblyKeyFile("上面生成的keys文件的路径就是....   .keys")>

  cc。指定这个后就再编译工程,再执行上面的bat文件

   dd。然后,全局注册,用everything找到gacutil.exe执行

           gacutil /i ClassLibrary1.dll  这个可以把gacutil.exe copy到windows里面把,或者把dllcopy到gacutil。exe这个目录里执行,具体就不太清楚到底怎么弄了,弄的时候忘记了,应该是都可以

 ee。 然后再泡一下那个asp,试试,应该就可以了

 

ff。注意如果想修改ClassLibrary1.dll的内容,如果先卸载注册的dll的话,很麻烦,可以这样,我是这样做的

     用everything,找到ClassLibrary1.dll,注意这个时候要保证test.asp,在浏览器中跑起来了已经

     找到以后挨个删除ClassLibrary1.dll,删着删着,肯定有一个现在被test.asp占用了,删除不了,那就是这个了

     以后修改了新的ClassLibrary1.dll,先把iis关掉,然后删除这个目录下的ClassLibrary1.DLL 然后,把新的

    ClassLibrary1.dll复制过来,然后再开启iis,再运行test.asp就是新的内容了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

添柴程序猿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值