HOW TO: 安裝組件到 Visual C# .NET 全域組件快取中

文章翻譯 文章翻譯
文章編號: 815808 - 檢視此文章適用的產品。
全部展開 | 全部摺疊

在此頁中

結論

本文將告訴您如何為組件產生強式名稱,及如何在全域組件快取 (GAC,Global Assembly Cache) 中安裝 DLL 檔。 有了全域組件快取 (GAC),您可以跨越眾多應用程式而共用組件。 全域組件快取 (GAC) 會自動與 .NET runtime 一起安裝。 元件通常儲存在 C:\WINNT\Assembly。

若要在全域組件快取 (GAC) 中安裝組件,必須賦與組件一個強式名稱。 此名稱是一個密碼編譯雜湊金鑰或簽章。 強式名稱可以確保正確的元件版本控制。 如此可以協助避免擁有相同名稱的元件彼此互相衝突,或者被其他消耗性的應用程式所誤用。


需求

下面清單列出了建議使用的硬體、軟體、網路基礎架構以及所需安裝的 Service Pack:
  • 有安裝共用組件電腦的管理者權限

本文假設您熟悉下列主題:
  • 對 .NET 組件有普通的熟悉度
  • 對命令提示字元工具的使用有普通的熟悉度

全域組件快取

若要使用 Visual Studio .NET 建立一個小型的類別程式庫專案、產生強式名稱還有在全域組件快取 (GAC) 中安裝專案的 .dll 檔,請遵循下列步驟:
  1. 在 Visual Studio .NET 中建立一個新的 Visual C# .NET 類別程式庫專案,並命名為 GACDemo
  2. 您必須使用強式名稱。 若要產生密碼編譯金鑰組,請使用 SN 工具。 此工具位於安裝有 .NET Framework Solution Developer Kit (SDK) 的 \bin 子目錄。 SN 工具易於使用。 命令列陳述式如下
    form:sn -k "[DriveLetter]:\[DirectoryToPlaceKey]\[KeyName].snk"
  3. 在 C:\ 建立一個名稱為 GACKey 的目錄,從命令提示字元存取金鑰。

    注意 大部分使用者的 .NET 工具都是位於 C:\Program Files\Microsoft.NET\FrameworkSDK\Bin。 在您輸入下列 SN 指令前,可以先將電腦上此相似的路徑複製到 .NET bin 目錄。 在命令提示字元輸入 cd,按滑鼠右鍵以貼上此路徑,再按下 ENTER,則可以快速切換到 SN 工具所在的目錄。

    輸入下列的命令:
    sn -k "C:\GACKey\GACkey.snk"
  4. 此時金鑰已產生,但尚未與專案的組件建立關聯。 若要建立關聯,在 Visual Studio .NET 方案總管中按兩下 AssemblyInfo.cs 檔。 本檔案有 Visual Studio .NET 專案建立時,依照預設所包含的組件屬性清單。 將程式碼中的 AssemblyKeyFile 組件屬性改為如下:
    [assembly: AssemblyKeyFile("C:\\GACKey\\GACKey.snk")]
    按下 CTRL+SHIFT+B 以編譯專案。您不需要任何其他程式碼就能將 .dll 檔安裝到全域組件快取 (GAC) 中。
  5. 您可以使用 Gacutil 工具或將 .dll 檔拖放到適當的目錄中以安裝 .dll 檔。 如果要使用 Gacutil 工具,則可以使用下列的指令:
    gacutil -I "[DriveLetter]:\[PathToBinDirectoryInVSProject]\gac.dll"
    如果您想拖放檔案,請使用 Microsoft Windows 檔案總管。 開啟兩個 [Windows 檔案總管] 執行個體。 在其中一個執行個體中,找到主控台專案的 .dll 檔輸出結果。 在另一個執行個體中,找到 c:\[SystemRoot]\Assembly。

    將 .dll 拖放到 Assembly 資料夾中。

完整程式碼列表 (AssemblyInfo.cs)

using System.Reflection;
using System.Runtime.CompilerServices;

//
// General Information about an assembly is controlled through the following 
// set of attributes. Change these attribute values to modify the information
// that is associated with an assembly.
//
[assembly: AssemblyTitle("")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("")]
[assembly: AssemblyCopyright("")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]

//
// Version information for an assembly is made up of the following four values:
//
//      Major Version
//      Minor Version 
//      Build Number
//      Revision
//
// You can specify all the values, or you can default the revision and build numbers 
// by using the '*' as shown below:

[assembly: AssemblyVersion("1.0.*")]

//
// To sign your assembly you must specify a key to use. See the 
// Microsoft .NET Framework documentation for more information about assembly signing.
//
// Use the following attributes to control that key is used for signing. 
//
// Notes: 
//   (*) If no key is specified, the assembly is not signed.
//   (*) KeyName refers to a key that has been installed in the Crypto Service
//       Provider (CSP) on your computer. KeyFile refers to a file that contains
//       a key.
//   (*) If the KeyFile and the KeyName values are both specified, the 
//       following processing occurs:
//       (1) If the KeyName can be found in the CSP, that key is used.
//       (2) If the KeyName does not exist and the KeyFile does exist, the key 
//           in the KeyFile is installed to the CSP and used.
//   (*) To create a KeyFile, you can use the sn.exe (Strong Name) utility.
//       When specifying the KeyFile, the location of the KeyFile must be
//       relative to the project output directory which is
//       %Project Directory%\obj\<configuration>. For example, if your KeyFile is
//       located in the project directory, you would specify the AssemblyKeyFile 
//       attribute as [assembly: AssemblyKeyFile("..\\..\\mykey.snk")]
//   (*) Delay Signing is an advanced option - see the Microsoft .NET Framework
//       documentation for more information about this.
//
[assembly: AssemblyDelaySign(false)]
[assembly: AssemblyKeyFile("C:\\GACKey\\GACKey.snk")]
[assembly: AssemblyKeyName("")]

驗證

  1. 啟動 Windows 檔案總管。
  2. 找到 C:\[SystemRoot]\ assembly。
  3. 您可以在已安裝的 .dll 檔清單中看到 GACDemo。

?考

如需詳細資訊,請參閱下列 Microsoft 網站:
Installing an Assembly into the Global Assembly Cache
http://msdn2.microsoft.com/en-us/library/dkkx7f79(vs.71).aspx
Global Assembly Cache
http://msdn2.microsoft.com/en-us/library/yf1d93sz(vs.71).aspx
Global Assembly Cache Tool
http://msdn2.microsoft.com/en-us/library/ex0ss12c(vs.71).aspx

屬性

文章編號: 815808 - 上次校閱: 2007年5月21日 - 版次: 1.7
這篇文章中的資訊適用於:
  • Microsoft Visual C# .NET 2002 Standard Edition
  • Microsoft Visual C# .NET 2003 標準版
關鍵字:?
kbcodesign kbcommandline kbnamespace kbhowtomaster KB815808
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。

提供意見

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com