搞了两天没搞出来
做个网站,要用Gac部署,实验如下,
用vs2003,或2005建一个最简单网站,一个网页
用sn.exe生成个key.snk,
生成强命名dll,把这个dll复制出来,用任何一种方法,注册到c:/windows/assembly
注册成功,codebase也设了
去原来网站把bin里面的dll删了,打开网页,报找不到dll
多方调试,发现网站执行的时候只会在bin和C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322或2.0里面找dll,根本不会去Gac找
想想也许应该在webconfig里面配个什么东西,问题就是不知道配什么,msdn也查了,网上也找了,没找到,webconfig里面写了很多东西也没有用,只有求求大家了.

解决方案 »

  1.   

    自己搞出来,关键一句
     <runtime>
        <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
          <qualifyAssembly partialName="App_Web_default.aspx.cdcab7d2" 
       fullName="App_Web_default.aspx.cdcab7d2,version=0.0.0.0,publicKeyToken=e2ef83d0a5d691b0,culture=neutral"/>
        
        </assemblyBinding>
      </runtime>
    写在<configuration>里面
    qualifyAssembly 这个命令会让运行时去找Gac
    研究出来的东西
    原dll注册到Gac后,要不要无所谓
    网站运行成功后
    就算把Gac的dll删了,网站也能跑,因为它已经生成相关dll在
    C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322或2.0
    里面的root文件夹里了.
    下面的问题就是如何在gac里进行dll升级了
      

  2.   

    我发现root文件夹里了里面的东西要重启IIS后才更新,所以当我在注册新的DLL后,要重启IIS后,才能看到新的结果.
    不过这个过程我发现一个问题,就是vs2005里面的发布网站只能生成版本为0.0.0.0的dll,这样我怎么进行版本的选择啊,
    还有就是为什么ajax.dll不能放到Gac里面,是因为它会生成一个xml文件,好像微软企业库里会生成xml文件,如果dll在gac里面,那它生成的xml放到哪里去了,所以就有问题.
    今天睡了,我明天会研究gac选择版本的问题.