最近一段时间在搜索延迟签名的一些问题时,看到网上很多的初学者对如何引用已经安装到GAC的程序集有很大的疑问,因此便有了这篇文章。
首先,我假设看这篇文章的小C们已经明白如何对程序集进行强命名,以及如何将程序集安装到GAC中。不清楚的话请先点击这里弄楚上面的问题。
- 将程序集安装到GAC后,在VS的添加引用的对话框中并不会出现该程序集。 例如我将my.dll这个程序集使用Gacutil -i my.dll注册到GAC后,在添加引用的对话框中我们并不能找到它,这是因为添加引用对话框中的程序集都是位于"C:/Program Files/Reference Assemblies/" 或 "C:/Windows/Microsoft.NET/Framework/版本号/"下,可以通过注册表增加类似的文件夹使得可以被添加引用对话框搜索到其下的程序集。感兴趣的同志可以自己在网上搜索下,这里我就不多说了。:)
- 需要大家明白一点,将程序集安装到GAC中主要是为了方便共享以及解决Dll hell的问题,并不适合在程序开发的过程中使用。那怎么样才能使用GAC中的程序集呢?这个不用你担心,Runtime会在GAC或指定目录中自动搜索所要引用的程序集。看完下面的例子相信大家就会明白了。
1)在VS中先创建一个ConsoleApplication项目ConsoleApplication1,再添加一个Class Library项目ClassLibrary1。
2)在cmd中定位到sn工具所在目录,再使用 sn -k myKey.snk 生成私钥,并拷贝到ClassLibrary1项目中。
3)复制以下代码到ClassLibrary1项目的class1.cs中,并build ClassLibrary1项目,得到ClassLibrary1.dll。
using
System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using
using System.Collections.Generic;
using System.Linq;
using System.Text;
using