冬眠
“如果你觉得自己在为傻瓜设计产品,那么很可能不仅无法设计出优秀的产品,而且连傻瓜也不喜欢你的设计。”--Paul Graham

导航

 

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

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

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

  部署到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

posted on 2013-09-23 09:46  无尽的冬眠  阅读(706)  评论(0编辑  收藏  举报