程序集之GAC |
您所在的位置:网站首页 › gac什么意思中文 › 程序集之GAC |
GAC的作用是可以存储一些有多个应用都要用到的公共的Assembly(程序集),例如System.Data、System.Windows.Forms等。这样,多个应用就可以从GAC中取得 Assembly,而不需要在所有应用中把要用到的Assembly都拷贝到应用程序的相关目录下面(比如:Windows应用程序的Debug目录,ASP.NET的bin目录)。
举一个最简单的例子,很多初学.NET的开发人员进行数据访问都是从SqlHelper.cs开始的,SqlHelper是一个数据访问对象,提供对数据库操作的各种方法,名字大概是学从PetShop吧,样子大概是这个样子, 又或是这个样子,且不管长啥样,如果部署在服务器上的多个应用都使用此对象,那么基本上会有下面几种类似的处理方法: (1)将此类直接拷贝到项目中使用; (2)建一个类库项目,包含此类,然后编译为dll,再在应用中添加引用以使用此程序集中的SqlHelper; (3)将(2)中的dll注册为GAC,直接在应用中使用,就像使用System.IO、System.Net一样 ;
当SqlHelper.cs更新后,对于(1)和(2)你可能会感觉到非常痛苦,因为要逐个应用去替换,而对于(3)则简单多了,只需要将编译后的dll重新注册到GAC就可以了。
记得在MSDN曾经看到过一句话,说是“.NET程序集解决了DLL Hell”的问题。
说这里,先说个故事:有一天,一个朋友的同事问我,“写过动态链接库吗?”, 我一时竟然没想起是什么,平常说dll太多了,几乎都忘记“动态链接库”这几个字了,不过还好,脑子里还有抹不去的记忆。
“.NET程序集解决了DLL Hell”关键一点就是相同名称而不同版本的程序集可以共存,打开Assembly所在目录,如:C:\Windows\assembly,看一下就比较清楚了。 可以思考一下,为什么同一系统中可以安装多个版本的.NET Framework、Visual Studio;而有些软件是不行的,只能存在唯一版本,大概就是这个道理。
2、将DLL注册到GAC (1)创建DLL:新建一个类库项目,名称为GACDemo,再添加一个类,如: using System.Text;namespace GACDemo{ public class Function { //计算字符串长度,中文及全角算1,其它算0.5 public static int GetStringLength(string text) { int Len = 0; //记录非中文、非全角字符为0.5个长度 float charLen = 0; char[] chars = text.ToCharArray(); for (int i = 0; i |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |