这个要安装进GAC的dll是跟应用程序在同一个解决方案中的一个类库项目的输出,并且已经生成密钥对,设置为强名称的程序集了。
在网上找了很多资料,具体都是描述使用gacutil命令行方式安装dll到gac的方法。
有些资料提到用installer安装进gac,但是没找到具体方法。
哪位能提供具体方法?

解决方案 »

  1.   

    installer可以,VS带的安装制作好像直接不行
      

  2.   

    可以考虑在安装完成后,在命令行模式用ngen把程序集加到GAC
      

  3.   

    就是想把dll加入gac的工作由msi来做掉,一步到位,多干净
      

  4.   

    我想知道vs.net的安装项目究竟能不能把dll安装入gac,如果可以的话,怎么设置
      

  5.   

    你可以写一个CustomAction,他的工作就是把dll安装入gac中
      

  6.   

    file的属性好象没有设置安装到gac的
    希望你使用Windows Installer Xml,我是用这个做的
      

  7.   

    Windows Installer Xml 这是个什么东西?
      

  8.   

    Windows Installer Xml 是微软的一个开源的制作安装程序的软件,
    它可以通过编写一个XML文件来生成你所需要的安装程序,
    据说office安装程序就是用它制作的
      

  9.   

    To chnking(kent) 
    碰巧给你找到答案了,嘿嘿
    只要你添加一个Specail Folder“Global Assembly Cache Folder”,
    把那个文件放在里面就好了。给分吧,哈哈
      

  10.   

    to uumlwy(爱老婆) :
    在vs.net2003的安装项目的文件系统中,果然可以添加特殊文件夹的功能,也有预定义的“Global Assembly Cache Folder”,把解决方案中需要放入到gac的类库项目输出到这个目录,然后安装,完毕后,看C:\WINDOWS\assembly目录,我那个要放入到gac的dll果然赫然在目,ok!
    (你的分会加的,先记住,后面又出问题了)可是,又发现新问题:
    解决方案中的主项目修改后,重新生成安装文件(要放入gac的类库项目未有修改),重新安装,问题出现,安装完后,在gac中的dll不见了.
    改了安装项目的version后编译再次安装,gac中的dll再次安装上.这时我考虑是不是va.net生成的msi在把dll安装进gac中时会查看这个dll是否已经存在,如果存在,会执行删除这个dll的操作.为了印证这个想法,在类库项目中修改了这个version和calture(主项目不修改),同时修改安装项目的version号,重新编译,安装.完后发现gac中的原来的那个dll被新版本的dll替换.这里有两个问题了:
    1、其实一般在安装项目中带有的要安装进gac的dll,同时在目标机器上的gac已经有这个dll时,希望这个dll不再安装,或者再次安装一次也无所谓,删掉这个dll将不是希望的操作,这会导致系统无法运行了。
    2、从上面的实践可以看出,好象msi把一个dll放入gac的时候会替换掉assembly名一致的dll,而不管version和caltrue是否不同。实际上一个dll的标识是由assembly name,version,caltrue、keytoken共同决定的,其中任何一个不同就表示是不同的dll。哪位高人可以指点一二?
      

  11.   

    已在:
    http://community.csdn.net/Expert/topic/4552/4552901.xml?temp=6.867617E-02
    高分新开一贴,请高手移步那边