将dll添加到GAC(Global Assembly Cache)中
怎么样将一个dll加载到GAC中去咧?之前遇到过一个问题就是Oracle.DataAccess.dll的问题,本身机子上面安装了10G,但是后来知道11G中提供的Oracle.DataAccess.dll中包含一个新方法OracleBulkCopy,类似.net中专门用于Sql Server的SqlBulkCopy。那个时候是想直接拿那个dll拿来直接用的,可写了一个示例程序运行的时候却出现错误, 就是说dll要注册到GAC中去才行。那个郁闷啊,恨的心痒痒的。可能是我比较迟钝吧,后来才想到一个可能就是GAC里面的那个Oracle.DataAccess.dll版本和程序中引用的不一致导致的错误。
其实.net自带的就有一个工具可以将dll注册到GAC中去的,以前一直没关注过。gacutil.exe。开始菜单-Microsoft Visual Studio -Visual Studio Tools-Visual Studio 2008 命令提示,在控制台中输入 gacutil.exe 回车,既可以看到一些参数。
一般要安装dll到GAC中的话选择-i参数即可,后面跟上dll文件的完整路径。
例如:
gacutil.exe -i E:\ODP.NET\bin\2.x\Oracle.DataAccess.dll
这样的话这个dll就被注册到GAC里面去了,有一个不好的就是这个路径不能再改变了,比较好的一个替代方法就是将dll直接copy到C:\WINDOWS\assembly这个目录下,再去注册。
如果你想要知道一个注册到GAC的dll的一些信息的话,比如Version, Culture, PublicKeyToken等也可以使用gacutil.exe -l去查看。具体的一些其他使用看上面的图就知道了。
嘿嘿,以后可以随便网GAC里面注册dll了咧。省去不少麻烦啊。
希望对各位有用,没用也就当自己做过备忘吧,