一 首先 程序集(dll) 安裝到 GAC 中的方法
所謂的GAC,就是全局程序集緩存(Global Assembly Cache)。
針對一些類庫項目或用戶控件項目在程序開發完成后,有時需要將開發的程序集(dll文件)安裝部署到GAC(全局程序集緩存)中,以便其他的程序也可以調用。被放入GAC的程序集,無論在何處被其他程序集引用,都可以保證自己能夠被CLR找到並且加載。簡單來說,GAC是一個有規范的目錄結構。如果主機使用的是Windows操作系統,並且操作系統被安裝在c:\windows下,那么GAC會被安裝在c:\windows\assembly\下。
在一般情況下,GAC具有如下優點:
· 程序集被多處引用時,可有效減少內存成本。
· 通過發布者策略可以有效地發布程序集的最新版本。
· 同一程序集的多個版本可以共存,並且可以通過配置進行切換。
是否所有的程序集都可以被放入GAC中呢,答案是否定的。
開始安裝
第一步: 給項目添加強名稱:
1. 在類庫項目調試完成后,使用sn.exe工具生成一個密鑰,此工具位於安裝 .NET Framework 解決方案開發人員工具包 (SDK) 的 \bin 子目錄中。SN 工具易於使用。
命令行語句采用以下形式:
2. 方法一:將密鑰與項目的程序集進行關聯: 項目屬性-->簽名-->為程序集簽名-->選擇強名稱密鑰文件。
方法二 在項目的AssemblyInfo.cs文件中,修改"AssemblyKeyFile"的屬性。 例如: [assembly:AssemblyKeyFile("D://myKey.snk")]
3. 重新生成項目集。
第二步: 將dll添加到GAC中
一般來說,將程序集(dll)安裝到GAC中有以下幾種方法:
1. 管理工具->Microsoft.NET Framework 2.0 配置->管理->我的電腦->程序集緩存->選中右鍵"添加"->將程序集添加到程序集緩存。
2. 手動將要安裝部署的dll文件拖至系統目錄windows下的assembly文件夾下(一般為C:/windows/assembly),此種方法不便於在安裝部署時使用。
3. 使用gacutil.exe工具安裝:gacutil -i "要注冊的dll文件全路徑"。
"gacutil.exe”工具為.NET自帶工具(C:/Program Files/Microsoft Visual Studio 8/SDK/v2.0/Bin)
在開始運行中輸入"cmd”進入命令窗口,通過CD選擇到"gacutil.exe”文件所在的目錄,如在命令行輸入: gacutil -i D:/Microsoft.SharePoint.dll
好了現在已經成功將DLL 安裝到了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或指定目錄中自動搜索所要引用的程序集。
二 程序集添加到 add refetence中的方法
在Visual Studio中,當為一個工程添加程序集引用時,彈出的“Add Reference”對話框會列出來一些程序集引用。那么如何把自己的程序集也添加到這里呢?
需要注意點:
1 32位機器與64位機器的注冊表鍵值插入位於不同位置。
2 不同類型的程序注冊表位置不同 silverlight 以及 windows phone 不再.netframework 里面而是在 Microsoft Sdks 里面
轉自:https://www.cnblogs.com/boypig/archive/2011/10/26/2225355.html
