代码改变世界

随笔档案-2011年12月2日

3.3 全局程序集缓存

2011-12-02 16:44 by iRead, 2146 阅读, 收藏,
摘要: 了解了如何创建强命名程序集之后,接着让我们讨论如何部署它,以及CLR如何利用特定的信息来定位并加载程序集。 如果一个程序集要由多个应用程序访问,必须把它放到一个已知的目录中,而且CLR在检测到对该程序集的一个引用时,必须知道自动检查该目录。这个已知的位置称为全局程序集缓存(Global Assembly Cache,GAC)。对于.NET3.5和以前的版本,GAC通常位于以下目录(假定Windows安装到C:\Windows目录): C:\Windows\Assembly 对于.NET4.0,GAC位于以下目录: C:\Windows\Microsoft.NET\Assembly GA... 阅读全文

3.2 为程序集分配强名称

2011-12-02 11:27 by iRead, 657 阅读, 收藏,
摘要: 要由多个应用程序访问的程序集必须放到一个已知的目录中。另外,检测到对该程序集的一个引用时,CLR必须能自动检查这个目录。但现在的问题是:两个(或者更多)公司可能生成具有相同文件名的程序集。所以,假如两个程序集都复制到同一个移植的目录,最后一个安装的就是“老大”,造成正在使用旧程序集的所有应用程序都无法正常工作(这正是Windows的“DLL Hell”现象的根源,因为共享DLL全部被复制到System32目录中)。 显然,只根据文件名来区分程序集是不够的。CLR必须提供对程序集进行唯一性标识的机制。这正是“强命名程序集”的来历。一个强命名的程序集具有4个重要attribute,它们共同对... 阅读全文