[高分高难度求解] 如何将程序集(dll)安装到全局程序集缓存(GAC)中

macenjie 2010-03-09 07:44:31
一般来说,将程序集(dll)安装到GAC中有以下两种方法:

1. 手动将要安装部署的dll文件拖至C:\windows\assembly文件夹下。
2. 使用gacutil.exe工具安装。gacutil -i "要注册的dll文件全路径"。
如在命令行输入: gacutil -i D:\myDLLDemo\IvanDemo.dll

这两种方法都需要通过人手动操作的。
我现在的程序,装在客户端,一定要把该 dll 部署到 GAC 中,程序的有些功能才能正常使用。
请问如何通过 C# 程序来安装,而非通过人手动安装? 因为客户端操作的人不懂如何手动安装。只能在程序 loading 的时候自动安装。

我尝试过 file.copy 命令,copy到C:\windows\assembly下,这个方法无效。

关于 gacutil ,它对于.net framework 的版本号不同,也不能通用。我无法判断客户端的.net framework的版本号。
客户端是没有visualstudio的,故没有gacutil.exe
...全文
301 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
mqgh2007 2011-07-18
  • 打赏
  • 举报
回复
也遇到这样的问题,貌似有几种办法可以解决,制作批处理程序,还有就是把gacutil.exe 打包进程序。
sunnyliueei 2011-01-13
  • 打赏
  • 举报
回复
没有强命名的dll装不进去 怎么强命名啊???
sito_hongta 2010-03-09
  • 打赏
  • 举报
回复
關注
回复内容太短了!
平生我自如 2010-03-09
  • 打赏
  • 举报
回复
没弄过阿!帮顶一下~~~~~~~~~~~~~~~~~~~~~~
love_yatou 2010-03-09
  • 打赏
  • 举报
回复
期待。。 顶下!!!!!
yuanhuiqiao 2010-03-09
  • 打赏
  • 举报
回复
JOCLI 2010-03-09
  • 打赏
  • 举报
回复
偶的意思是 你可以用一个独立的 gacutil.exe 拷贝到你的项目一指定路径下,一起将你的项目打包,你可以在安装程序时加上几句注册的代码就会自动执行注册了 dll了

比如:

string filepath=Application.StartupPath+"\\gautil.exe";
string arguments="-u YourDllName";
ProcessStartInfo prsInfo=new ProcessStartInfo(filepath,arguments);
string result=Proess.Start(prsInfo).StandardOutput.ReadToEnd();
arguments="-i\""+Application.StartupPath+"\\YourDllName.dll";
prsInfo=new ProcessStartInfo(filepath,arguments);
result=result+Proess.Start(prsInfo).StandardOutput.ReadToEnd();
cjcgy 2010-03-09
  • 打赏
  • 举报
回复
拷一个过去就行了~~
都是这么干的。
guoyichao 2010-03-09
  • 打赏
  • 举报
回复
用最新版本的windows installer做一个安装包就行了,它可以让你指定哪些assembly需要进gac。
或者是在你的程序同目录下创建一个.gac文件,内容是要放进gac的assembly全路径,1行1条,程序执行时runtime会自动把这些dll安装进gac。
wormhole1024 2010-03-09
  • 打赏
  • 举报
回复
顶。。。。。。。。。。。。
spiderwolf2010 2010-03-09
  • 打赏
  • 举报
回复
客户端程序运行总要装.net framework的,安装的时候顺带安装进去。
gacutil.exe 文件的路径不就有了。
做个dll注册的批处理文件。
程序启动时,判断是否注册过,未注册就调用批处理文件注册。
criedshy 2010-03-09
  • 打赏
  • 举报
回复
引用 6 楼 jocli 的回复:
客户端是没有visualstudio的,故没有gacutil.exe

你把这个和你的安装文件一起打包 客户端不就有了


这个不是装在C盘那个目录的
criedshy 2010-03-09
  • 打赏
  • 举报
回复
没接触过
JOCLI 2010-03-09
  • 打赏
  • 举报
回复
客户端是没有visualstudio的,故没有gacutil.exe

你把这个和你的安装文件一起打包 客户端不就有了
ConanKid 2010-03-09
  • 打赏
  • 举报
回复
貌似对程序集签个名应该就可以自动安装到GAC
macenjie 2010-03-09
  • 打赏
  • 举报
回复
没人懂吗?顶一下了。

111,086

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧