好学IT学院:IT信息技术分享交流平台
标签:C#  来源:互联网  作者:本站整理  发布时间:2009-07-06  ★★★加入收藏〗〖手机版
摘要:关于全局程序集GACGac就是C:\WINDOWS\assembly文件夹,中文叫全局程序集缓存,把dll放到这个文件夹里,bin下面就不用放dll了,目的是为了程序集共享。安装有公共语言运行库的每台计算机都具有称为全局程序集缓存的计算机范……

VS2003

在网站项目的AssemblyInfo.cs里面的[assembly: AssemblyKeyFile("")]做类似如下配置
[assembly: AssemblyKeyFile(@"C:\testKey.snk")]
注意这里写绝对路径最好,相对路径很难写
生成网站
这时网站的dll就是个强命名程序集,
打开程序---管理工具---.net framework1.1(或2.0)配置
我的电脑,程序集缓存,右键添加,把刚生成好的dll添加进去,无错的话就添加成功了。

这时你可以把自己bin目录下的dll删了,但这时网页还打不开,对webconfig做如下修改
<compilation defaultLanguage="c#" debug="true" >
 <assemblies>
 <add assembly="youDllname, Version=1.0.2811.20076, Culture=neutral, PublicKeyToken=c52d31a7559027ce"/>
 </assemblies>
</compilation>

至于assembly后面的dll全名怎么写,你可以用反编译工具Reflector.exe去查你的dll,也可以在.net framework1.1(或2.0)配置里面找到你的dll查属性得到。
配好后网页就应该可以打开了,如果打不开,重启下iis

VS2005

要麻烦一点,你生成好snk文件后,第一步,当你确定好网站程序不改了后,点网站发布,在发布里面用固定命名和单页程序集,和对预编译程序用强命名,下面有一个可以选择snk文件的按纽,把snk文件选进去,发布网站,
然后再用上面的方法把bin目录里面的dll加到Gac里面,这时可以把bin目录里面的dll删了。然后配制webconfig如下
<configuration>节点下
<runtime>
 <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
 <qualifyAssembly partialName="CE.EIP.CRMBusinessEntities" fullName="CE.EIP.CRMBusinessEntities, Version=1.0.0.0, Culture=neutral, PublicKeyToken=C75F352AFF88DAD1"/>
 </assemblyBinding>
</runtime>

这时网站应该可以运行。qualifyAssembly 在2005里面是通知运行时去Gac找dll的方法
基本上是这样,但你第一次很可能操作成功不了,所以要注意如下问题
webconfig永远是在你部署时修改,你要是在开发时修改就有错
当你都配制好后,要重启下iis,你更新dll的时候最好也重启下iis,为什么呢?
因为运行时是先去找C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\Temporary ASP.NET Files
下面的一个叫root 文件里面的dll,如果找到了,就不会去Gac里面找了,重启IIS的目的就是为了把里面的文件删除
并不是所有dll都可以放到Gac里面的,比如ajax.dll系列,因为这个dll会生成xml文档,dll在GAC里面,那xml会生成在哪里呢?所以凡是要生成xml文档的dll都不适合放进去。

使用Visual Studio 2010空白解决方案的三个理由
  在Visual Studio 2010(包括以前的版本中)都提供了很多现成的解决方案,来帮助程序开发人员降低开发的工作量。如多项目…
  • 好学触屏公众号虎力全开、杨帆起航!
  • 好学考试H5触屏版开放内测