您目前已離線,請等候您的網際網路重新連線

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

如需本文的 Microsoft Visual Basic .NET 版本,請參閱 315682

本文內容

結論
本文將告訴您如何為組件產生強式名稱,及如何在全域組件快取 (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
回到頁首
內容

文章識別碼:815808 - 最後檢閱時間:05/21/2007 02:26:57 - 修訂: 1.7

Microsoft Visual C# .NET 2002 Standard Edition, Microsoft Visual C# .NET 2003 標準版

  • kbcodesign kbcommandline kbnamespace kbhowtomaster KB815808
意見反應
"76500"; var Ctrl = ""; document.write("