这个要安装进GAC的dll是跟应用程序在同一个解决方案中的一个类库项目的输出,并且已经生成密钥对,设置为强名称的程序集了。
在网上找了很多资料,具体都是描述使用gacutil命令行方式安装dll到gac的方法。
有些资料提到用installer安装进gac,但是没找到具体方法。
哪位能提供具体方法?
在网上找了很多资料,具体都是描述使用gacutil命令行方式安装dll到gac的方法。
有些资料提到用installer安装进gac,但是没找到具体方法。
哪位能提供具体方法?
调试欢乐多
希望你使用Windows Installer Xml,我是用这个做的
它可以通过编写一个XML文件来生成你所需要的安装程序,
据说office安装程序就是用它制作的
碰巧给你找到答案了,嘿嘿
只要你添加一个Specail Folder“Global Assembly Cache Folder”,
把那个文件放在里面就好了。给分吧,哈哈
在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。哪位高人可以指点一二?
http://community.csdn.net/Expert/topic/4552/4552901.xml?temp=6.867617E-02
高分新开一贴,请高手移步那边