仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 652|回复: 6
打印 上一主题 下一主题

[学习教程] ASP.NET网页编程之.Net中打消Dll中的dependency

[复制链接]
只想知道 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 22:30:08 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
一个很大的类库。应用程序之所以难以跨平台,在于直接调用了特定平台的接口,而一个巨大的类库,就能极大地减少应用程序对平台的依赖。  我们在做.NetClassLibrary项目经常常会碰到如许的成绩,我想天生一个dll供别的程序利用,但在我的项目里,又必要援用一些别的的reference,像ActiveX控件或别的dll,而这些控件或dll又没有strongname,不克不及写进到GAC(GlobalAssemblyCache)中,因此,在注册利用你的dll时,就必需带上这些援用的控件或dll,才干完成注册。但是,这并非我们必要的,我们只想供应一个dll给人家用就好了,为何还要带上一堆的控件或dll呢?他人也不肯意如许。那末,有甚么举措办理这个成绩呢?

  人人都晓得,在.Net中,假如你试图将一个dll写进到GAC中,那末除你的dll项目要利用strongname之外,你的项目顶用到的别的的控件或dll都必要有strongname,不然,当你注册你的dll时,会提醒短少dependency。这一点让人很烦,但应当有它的优点,利于版本把持。既然是如许,我们只要将援用到的控件或dll都加上strongname,并写进到GAC中,如许在注册你的dll时,就会到GAC中往找它所用到的控件或dll了。那末,怎样做呢?大抵分两步:

  1、给必要援用的控件或dll加strongname

  这是必需要做的,不然你没法把他们写到GAC中。.Net的SDK供应一个给程序集天生强名的工具,实在不但是天生,另有办理及署名的考证等,只是依据分歧的option来的。具体申明请参考MSDN。上面是经由过程sn创立一个keypair,存储在keyfile.snk中:

  sn-kkeyfile.snk
  如许就天生了一个密钥对。假如你的项目中没有援用别的的不带强名的控件或dll的话,只是想把本人的dll写进GAC,那末在你项目标AssemblyInfo.cs中,把AssemblyKeyFile加上,就是你方才天生的keyfile.snk文件。

  [assembly:AssemblyKeyFile("....keyfile.snk")]

  这里的路径是指编译后项目输入的绝对路径,以是,假如这里写成如许的话(固然你也能够修正),就应当把方才天生的keyfile.snk拷贝到项目标跟目次下,以确保在编译的时分能找到snk文件。如许,编译后的dll就能够写到GAC中了:

  gacutil-iyourdll.dll

  假如你的项目中援用了别的的不带有强名的控件或dll的话,就必要再做下一步。

  2、给不带有强名的控件或dll加上强名

  这里要用到两个工具,也是.Net自带的,tlbimp和aximp。tlbimp是将COM范例库中的范例界说转换为CLR程序集的等效界说,aximp是将COM范例库中的范例界说转换为windows窗体控件,具体申明请参考MSDN。

  假定你要给tom.dll和MSFlxGrd.ocx加上强名:
  
  tlbimptom.dllkeyfile:tom.dll.snkout:tom.dll
  aximpMSFlxGrd.ocxkeyfile:MSFlxGrd.ocx.snkAxMSFlxGrd.ocx.snk

  这里,tom.dll.snk、MSFLlxGrd.ocx.snk和AxMsFlxGrd.ocx.snk是依据第一步发生的,每个dll都要对应一个snk。tom.dll为转换过的dll的名字,没有甚么别的寄义。别的必要申明的是MSFlxGrd.ocx会发生两个dll,分离是MSFlexGridLib.dll和AxMSFlexGridLib.dll。团体了解为在窗体初始化时会发生一个AxMSFlexGridLib,不知谁有更好的注释?

  如许就把tom.dll和MSFlxGrd.ocx控件加上了强称号并转换为响应的dll了,再把它们写进到GAC中:

gacutil-itom.dll
gacutil-iMSFlexGridLib.dll
gacutil-iAxMSFlexGridLib.dll

  剩下的事情就是将它们从头援用到你的项目中,从头编译,如许天生的dll在注册时就不必要任何dependency了,由于它们已在GAC中了,翻开c:winntassembly便可看到。

  假如要将它们从GAC中删除,则:

gacutil-utom
gacutil-uMSFlexGrid
gacutil-uAxMSFlexGrid
  tom、MSFlexGrid和AxMSFlexGrid为GAC中的名字,这里不必要加任何路径。

竟发现没有太大的帮助。总觉得要用起来,感觉到不了位。因为公司机器的原因,一直没有安装vs.net(也从来没有用过)。以前做asp的时候一直用DW(感觉其代码联想功能不错),可现在到了asp.net却不习惯了。
变相怪杰 该用户已被删除
沙发
发表于 2015-1-19 15:38:47 | 只看该作者
虽然在形式上JSP和ASP或PHP看上去很相似——都可以被内嵌在HTML代码中。但是,它的执行方式和ASP或PHP完全不同。在JSP被执行的时候,JSP文件被JSP解释器(JSPParser)转换成Servlet代码,然后Servlet代码被Java编译器编译成.class字节文件,这样就由生成的Servlet来对客户端应答。所以,JSP可以看做是Servlet的脚本语言(ScriptLanguage)版。
飘灵儿 该用户已被删除
板凳
发表于 2015-1-26 20:03:10 | 只看该作者
是指转换后的Servlet程序代码的行数。这给调试代码带来一定困难。所以,在排除错误时,可以采取分段排除的方法(在可能出错的代码前后输出一些字符串,用字符串是否被输出来确定代码段从哪里开始出错)。
只想知道 该用户已被删除
地板
 楼主| 发表于 2015-2-10 07:10:38 | 只看该作者
ASP.NET:ASP.net是Microsoft.net的一部分,作为战略产品,不仅仅是ActiveServerPage(ASP)的下一个版本;它还提供了一个统一的Web开发模型,其中包括开发人员生成企业级Web应用程序所需的各种服务。ASP.NET的语法在很大程度上与ASP兼容,同时它还提供一种新的编程模型和结构,可生成伸缩性和稳定性更好的应用程序,并提供更好的安全保护。
柔情似水 该用户已被删除
5#
发表于 2015-3-1 03:06:52 | 只看该作者
HTML:当然这是网页最基本的语言,每一个服务器语言都需要它的支持,要学习,这个肯定是开始,不说了.
谁可相欹 该用户已被删除
6#
发表于 2015-3-10 12:31:47 | 只看该作者
平台无关性是PHP的最大优点,但是在优点的背后,还是有一些小小的缺点的。如果在PHP中不使用ODBC,而用其自带的数据库函数(这样的效率要比使用ODBC高)来连接数据库的话,使用不同的数据库,PHP的函数名不能统一。这样,使得程序的移植变得有些麻烦。不过,作为目前应用最为广泛的一种后台语言,PHP的优点还是异常明显的。
若天明 该用户已被删除
7#
发表于 2015-3-24 01:43:34 | 只看该作者
ASP.NET可以无缝地与WYSIWYGHTML编辑器和其他编程工具(包括MicrosoftVisualStudio.NET)一起工作。这不仅使得Web开发更加方便,而且还能提供这些工具必须提供的所有优点,包括开发人员可以用来将服务器控件拖放到Web页的GUI和完全集成的调试支持。微软为ASP.net设计了这样一些策略:易于写出结构清晰的代码、代码易于重用和共享、可用编译类语言编写等等,目的是让程序员更容易开发出Web应用,满足计算向Web转移的战略需要。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2025-2-23 07:28

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表