我需要在安装程序中使用gacutil.exe把一个DLL添加到GAC,但不幸的是gacutil.exe在.net 2.0中没有了,它只存在于VS里。但客户机器上不一定装有VS,且有网友说gacutil.exe不能单独使用,貌似现在只能通过VS自带的安装布署来解决这个问题:利用Visual Studio制作安装包的时候,添加一个安装项目,进入文件系统编辑器,右击左侧的“目标计算机上的文件系统”——添加特殊文件夹——Global Assembly Cache文件夹,左侧添加了Global Assembly Cache文件夹,在右侧添加要输出的程序集即可但VS做成的安装包有个致命缺点:就是它有两个文件!我一直是用NSIS的,杯具了!怎么办??
难道只能用VS自带安装布署么?(强大的微软VS为什么不能生成单一安装包呢,orz..)

解决方案 »

  1.   

    命令也没与了吗?看看Microsoft下有没有   gacutil 
      

  2.   

    “两个文件”就致命了吗?压缩并生成自动解压并(设置参数)运行解压后的程序的单个exe行不行?
      

  3.   

    ClickOnce 透过 IIS 部署呢?
      

  4.   

    对Microsoft感激涕零,独立使用gacutil和regasm 貌似成功了以前使用方法运行下面内容的bat文件:
    call "C:\Program Files\Microsoft Visual Studio 8\Common7\Tools\vsvars32.bat" 
    gacutil /i APP_Mht.dll 
    regasm APP_Mht.dll
    pause
    上面的gacutil和regasm分别位于VS和系统.net目录里。这样就产生一个很严重问题:安装程序时客户机器上不一定装有VS(.net2还好说,20多M,替用户装了,VS可是2G多)最后抱着必死之决心,将gacutil和regasm分别拷贝进system32,然后运行下面内容bat(也在system32)
    gacutil /i APP_Mht.dll 
    regasm APP_Mht.dll
    pause让我惊喜万分的是,居然全部显示成功了
    等明天偶到朋友机器上再测试,就可以做最后结论^^万分感谢MS赋予gacutil和regasm独立性
      

  5.   

    真正的 GAC 部署, 可以使用 Fusion API, 这也是正道.
      

  6.   

    我的.net中没有,我就是用VS中的gacutil.exe,哈哈,安装AJAX模块成功