码迷,mamicode.com
首页 > 其他好文 > 详细

C#程序集系列11,全局程序集缓存

时间:2014-09-14 15:20:57      阅读:307      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   color   os   使用   ar   文件   2014   

全局程序集缓存(GAC:Global Assembly Cache)用来存放可能被多次使用的强名称程序集。当主程序需要加载程序集的时候,优先选择到全局程序集缓存中去找寻需要的程序集。

 

为什么需要全局程序集缓存?
假设程序A引用B程序集,程序C也引用B程序集,在这种情况下,可以把B程序集放到一个全局程序集缓存中是明智的做法。

 

□ 使用全局缓存程序集

→删除F盘as文件夹中所有dll和exe后缀的文件
→编译Cow.cs成程序集
bubuko.com,布布扣

→把刚创建的Farm.dll存放到全局程序集缓存中
bubuko.com,布布扣
报错是因为,非强名称程序集是无法保存到全局程序集缓存中的。

→重新编译Cow.cs,这次使用密匙
bubuko.com,布布扣
→再次把Farm.dll存放到全局程序集缓存中
bubuko.com,布布扣

如果想把一个强名称程序集从全局缓存中取出:gacutil -u farm
→编译MainClass.cs成可执行文件,引用Farm.dll
bubuko.com,布布扣
→用记事本打开MainClass.cs,修改如下,保存

using System;
class MainClass
{
    static void Main()
    {
        Cow.Moo();
        Cow.Moo();
        Cow.Moo();
    }
}

→再次编译MainClass.cs,引用现在已经在全局程序集缓存中的Farm.dll
bubuko.com,布布扣
→把Farm.dll从as文件夹中删除,因为已经存放到全局程序集缓存中了
bubuko.com,布布扣
→再次运行MainClass.exe和AnotherMainClass.exe
bubuko.com,布布扣
说明已经在使用全局程序集缓存中的Farm.dll了。

 

□ 全局缓存程序集在哪里

在"C:\Windows\Microsoft.NET\assembly\GAC_MSIL\Farm\v4.0_3.3.3.3__863de8402b3a9978"文件夹中

 

总结:
○ 当程序集可能被多次引用,可以考虑把程序集放入全局程序集缓存
○ 自定义程序集和.NET默认的一些程序集,都被放在"C:\Windows\Microsoft.NET\assembly\GAC_MSIL"了这个全局程序集缓存文件夹中
○ C#编译器会先优先到全局程序集缓存中找寻程序集

 

C#程序集系列11,全局程序集缓存

标签:style   blog   http   color   os   使用   ar   文件   2014   

原文地址:http://www.cnblogs.com/darrenji/p/3971016.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!