首页 新闻 会员 周边 捐助

一个GAC的文件夹下能否部署多个dll

0
悬赏园豆:5 [已解决问题] 解决于 2013-01-23 12:38

一个文件夹下只能有一个dll吗?能部署多个吗,能放配置文件吗?注意不是通过直接复制来部署

ITailor的主页 ITailor | 初学一级 | 园豆:194
提问于:2013-01-16 10:50
< >
分享
最佳答案
0

http://www.cnblogs.com/bluesky4485/archive/2010/03/31/1701744.html

GAC按照签名来定位程序集,跟文件夹无关。不能安装配置文件。

收获园豆:5
Launcher | 高人七级 |园豆:45050 | 2013-01-16 11:02

在我的硬盘上 c:\Windows\assembly\GAC_MSIL\Policy.14.0.Microsoft.Office.Interop.Word\15.0.0.0_

_71e9bce111e9429c 就有两个文件一个dll,一个config文件。应该是office 2013的,但是不知道怎么部署进去的。

ITailor | 园豆:194 (初学一级) | 2013-01-16 11:22

@ITPuppy: 大哥这篇文章中有说啊:

gacutil.exe -i E:\ODP.NET\bin\2.x\Oracle.DataAccess.dll

这样的话这个dll就被注册到GAC里面去了,有一个不好的就是这个路径不能再改变了,比较好的一个替代方法就是将dll直接copy到C:\WINDOWS\assembly这个目录下,再去注册。

你的程序集的物理路径和注册路径可以相同啊,可以拷贝啊,但是拷贝后还得注册啊。

Launcher | 园豆:45050 (高人七级) | 2013-01-16 11:49

@Launcher: 我知道怎么把一个dll注册到GAC,但是不知道怎么把多个gac注册到同一个文件夹下。用以上命令,会在gac目录下生成一个文件夹,用来存放这个dll。

ITailor | 园豆:194 (初学一级) | 2013-01-17 12:55

@ITPuppy: 不行。

Launcher | 园豆:45050 (高人七级) | 2013-01-17 13:18

@Launcher:  这个文件夹下就有两个dll,为什么弄两个

ITailor | 园豆:194 (初学一级) | 2013-01-23 10:41

@ITPuppy: 拷贝进去,再注册。

Launcher | 园豆:45050 (高人七级) | 2013-01-23 10:43

@Launcher: 网上看到的都是用gacutil注册,拷贝进去再注册,它会不会在另外一个地方新建一个文件夹。btw,有一个dll用reflector打不开

ITailor | 园豆:194 (初学一级) | 2013-01-23 11:31

@ITPuppy: 会不会新建你得看你的文件夹名称是否和注册自动生成的不一样。打不开,说明是Win32 DLL,非托管代码的,你可以用 depends.exe 来查看,同时也说明,这个DLL是没法注册到GAC的,而是因为被同目录的托管程序集引用。因此,此DLL要么拷贝到System32,要么就必须和调用程序集在同一个目录。

Launcher | 园豆:45050 (高人七级) | 2013-01-23 11:38

@Launcher: 明白了,看来一个文件夹只能注册一个,其他的都是因为需要引用才放到那的,并非是通过注册过去的。谢谢你

ITailor | 园豆:194 (初学一级) | 2013-01-23 11:44
其他回答(1)
0

你可以手动拖dll到gac或者使用GACUtils工具将dll安装到gac。但是要注意能安装到gac的dll必须是强名称签名。请参考http://www.cnblogs.com/xx_cs/archive/2011/07/12/2104019.html

强名称程序集由:<程序集名称>, <版本号>, <区域性>, <公钥标记> 4部分组成,只要一部分不一样哪怕同名也可以放入gac

滴答的雨 | 园豆:3660 (老鸟四级) | 2013-01-16 11:35

非复制,我问的是部署多个dll在同一个文件夹

支持(0) 反对(0) ITailor | 园豆:194 (初学一级) | 2013-01-16 11:47
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册