创建共享程序集

  共享程序集的一个副本可供一台机器上的多个应用程序使用,文件不会出现在应用程序的运行目录下,而是被安装在GAC(Globle Assemble Cache)中。

  在.net4.0中,GAC被分在2个地方。.NET1.0到.NET3.5的基础类库被放到“C:Windowsassembly”,而在.NET4.0 编译下的程序集,是放到“C:WindowsMicrosoft.NETassemblyGAC_MSIL”中。

  比如我们经常使用的MessageBox.Show()方法,属于System.Windows.Forms.dll程序集,这个程序集是在"C:Windowsassembly"中。

  部署到GAC之前,一定要给这个程序集赋一个强命名(包括程序集的友好名称、版本号、公钥值等),它就像是.NET中的GUID,是一个唯一标识符。它的作用是用于标识给定.NET二进制文件的发行者。

  部署共享程序集的步骤如下:

1、生成强命名文件。可通过命令或图形化两种方式实现。

  (1)命令方式

    a、使用【sn -k 文件名.snk】命令生成以 *.snk(strong name key)后缀的文件。

      例如:sn -k mydll.snk

    b、将强文件信息写进AssemblyInfo.cs文件中。

      添加“[assembly: AssemblyKeyFile(强文件文件名)]”。例如:[assembly: AssemblyKeyFile(@"F:mydll.snk")]

  (2)图形化方式

    a、在项目属性中,选择“签名”,勾选“为程序集签名”,选择“新建”。

    b、创建强命名文件。

2、安装强命名的程序集。

  使用【gacutil.exe】命令将程序集安装到GAC中。

  【gacutil.exe -i 程序集名称】:安装程序集到GAC中。例如:gacutil.exe -i mylib.dll

  【gacutil.exe -l 程序集名称】:查看程序集是否在GAC中。例如:gacutil.exe -l mylib(不能带dll后缀)

  【gacutil.exe -u 程序集名称】:卸载GAC中的程序集。例如:gacutil.exe -u mylib(不能带dll后缀)

  

  将代码库部署为私有还是共享,仍然是一个需要权衡的问题。它取决于项目本身的细节。一般来说,如果构建的库可被大量应用程序使用,共享程序集将十分有帮助,因为你可以轻松地部署一个新的版本。

 

参考:http://www.cnblogs.com/damonlan/p/3221347.html

原文地址:https://www.cnblogs.com/hibernation/p/3333407.html