C#程序集系列11,全局程序集缓存】的更多相关文章

全局程序集缓存(GAC:Global Assembly Cache)用来存放可能被多次使用的强名称程序集.当主程序需要加载程序集的时候,优先选择到全局程序集缓存中去找寻需要的程序集. 为什么需要全局程序集缓存?假设程序A引用B程序集,程序C也引用B程序集,在这种情况下,可以把B程序集放到一个全局程序集缓存中是明智的做法. □ 使用全局缓存程序集 →删除F盘as文件夹中所有dll和exe后缀的文件→编译Cow.cs成程序集 →把刚创建的Farm.dll存放到全局程序集缓存中报错是因为,非强名称程序…
针对一些类库项目或用户控件项目(一般来说,这类项目最后编译生成的是一个或多个dll文件),在程序开发完成后,有时需要将开发的程序集(dll文件)安装部署到GAC(全局程序集缓存)中,以便其他的程序也可以调用. 一般来说,将程序集(dll)安装到GAC中有以下几种方法: 1.  管理工具->Microsoft.NET Framework 2.0 配置->管理->我的电脑->程序集缓存->选中右键"添加"->将程序集添加到程序集缓存. 2.  手动将要安…
  为什么需要强名称程序集和数字签名 有一个类库项目ClassLib,对应的程序集是ClassLib.dll.当前控制台项目引用ClassLib.dll程序集的方式有2种: 1.通过添加现有项目 文件→添加→现有项目→选择"ClassLib.csproj",把项目引入到当前控制台所在解决方案→右键控制台项目"引用"→添加引用→解决方案→项目→选择ClassLib项目   2.通过把程序集复制到当前项目文件夹下 在控制台项目下创建Library文件夹→把程序集Clas…
本篇主要体验,在存在多个版本程序集的情况下,如何让CLR选择哪个版本程序集运行,以及程序集版本的切换. 分别生成非强名称程序集不同版本 □ 生成某个版本的程序集 →清理F盘as文件夹,剩下如下文件 →查看Cow.cs文件 using System; using System.Reflection; [assembly: AssemblyVersion("3.3.3.3")] public class Cow { public static void Moo() { Console.Wr…
本篇体验C#编译器和CLR运行时如何查找程序集,并自定义CLR运行时查找程序集的方式. □ C#编译器和CLR运行时如何查找程序集 C#编译器在哪里?--在C:\Windows\Microsoft.NET\Framework\v4.0.30319中 →删除F盘as文件夹中所有的exe和dll文件→把上一篇全局程序集缓存文件夹(C:\Windows\Microsoft.NET\assembly\GAC_MSIL\Farm\v4.0_3.3.3.3__863de8402b3a9978)中的Farm.…
当一个程序集的名称,版本,文化,Public Key都做了设置,就可以把这个程序集叫做"强名称程序集".强名称程序集可以防止被仿冒或篡改.本篇首先创建一个强名称程序集,接着模拟篡改程序集,看看最终结果如何? □ 创建一个强名称程序集 →在"C#程序集系列08,设置程序集版本"和"C#程序集系列09,程序集签名"中,在F盘的as文件夹中创建了一些文件→删除所有除了.cs类型的所有文件→创建一个密匙→编译Cow.cs,并用密匙签名→编译MainCla…
在"C#程序集系列08,设置程序集版本"中体验了为程序集设置版本,但对于程序集的安全性来说,还远远不够.本篇体验程序集的签名. □ 程序集的签名 →F盘as文件夹下有多个文件→在程序集所在文件夹创建密匙→打印密匙密匙是一堆乱码,这是经过加密了.→在密匙的基础上创建公匙Public Key→打印公匙Public Key注意:这里的public token是public key经过哈希算法而获得的.当程序集被引用,该程序集对外是以public token形式存在的. →现在重新编译&quo…
区别一个程序集,不仅仅是程序集名称,还包括程序集版本.程序集公匙.程序集文化等,本篇体验通过界面和编码设置程序集版本. □ 通过Visual Studio设置程序集版本 →右键项目,选择"属性",选择"应用程序"→点击"程序集信息",设置如下,点击确定→点击项目Properties文件夹下的AssemblyInfo.cs,可以看到程序集版本已经设置生效[assembly: AssemblyVersion("3.3.3.3")]…
以下几个方面用来区分不同的程序集:○ 程序集名称:Name○ 程序集版本:Version○ 程序集公匙: Public Token○ 程序集文化:Culture 如果没有很严格地按照上面的几个方面来创建程序集,程序集是很容易被篡改的.本篇体验篡改程序集. →清空F盘as文件夹下的所有文件→在as文件夹下创建Dog.cs类,用记事本打开,编写如下,保存 using System; public class Dog { public static void MakeSound() { Console…
CLR在加载程序集的时候会查看程序集清单,程序集清单包含哪些内容呢?可执行文件和程序集有什么区别/ 程序集清单 □ 查看程序集清单 →清空F盘as文件夹中的所有内容→创建MainClass.cs文件→把MainClass.cs编译成程序集→反编译MyDll.dll,在1.txt文件中呈现 ildasm /out:1.txt MyDll.dll →打开1.txt文件 1.txt // Metadata version: v4.0.30319 .assembly extern mscorlib {…