Instalowanie zestawu w globalnej pamięci podręcznej zestawów przy użyciu języka Visual C#

Ten artykuł zawiera informacje o sposobie instalowania zestawu w globalnej pamięci podręcznej zestawów w języku Visual C#.

Oryginalna wersja produktu: Visual C#
Oryginalny numer KB: 815808

Podsumowanie

W tym artykule opisano sposób generowania silnej nazwy zestawu oraz instalowanie pliku .dll w globalnej pamięci podręcznej zestawów (GAC). Za pomocą usługi GAC można udostępniać zestawy w wielu aplikacjach. Usługa GAC jest automatycznie instalowana za pomocą środowiska uruchomieniowego platformy .NET. Składniki są zwykle przechowywane w programie C:\WINNT\Assembly.

Aby zainstalować zestaw w gac, należy nadać zestawowi silną nazwę. Nazwa jest kryptograficznym kluczem skrótu lub podpisem. Ta silna nazwa zapewnia poprawną wersję składnika. Pomaga to zapobiegać konfliktom składników o tej samej nazwie lub niepoprawnemu używaniu przez aplikację zużywaną.

Wymagania

  • Uprawnienia administratora do komputera, na którym jest instalowany zestaw udostępniony
  • Ogólna znajomość zestawów na platformie .NET.
  • Ogólna znajomość korzystania z narzędzi w wierszu polecenia.

Globalna pamięć podręczna zestawów

Aby utworzyć mały projekt biblioteki klas przy użyciu programu Visual Studio, wygenerować silną nazwę i zainstalować plik .dll projektu w gac, wykonaj następujące kroki:

  1. W programie Visual Studio utwórz nowy projekt biblioteki klas języka Visual C# i nadaj projektowi nazwę GACDemo.

  2. Musisz użyć silnej nazwy. Aby wygenerować tę parę kluczy kryptograficznych, użyj narzędzia Strong Name (Sn.exe). To narzędzie znajduje się w podkatalogu\bin, w którym jest zainstalowany zestaw .NET Framework Solution Developer Kit (SDK). Narzędzie Sn.exe jest łatwe w użyciu. Instrukcja wiersza polecenia przyjmuje następujące elementy

    sn -k "[DriveLetter]:\[DirectoryToPlaceKey]\[KeyName].snk"
    

    Uwaga

    W programie Visual Studio możesz użyć właściwości projektu IDE, aby wygenerować parę kluczy i podpisać zestaw. Następnie możesz pominąć krok 3 i krok 4, a także pominąć wprowadzanie jakichkolwiek zmian kodu w pliku AssemblyInfo.cs .

    Aby użyć właściwości projektu IDE do wygenerowania pary kluczy i podpisania zestawu, wykonaj następujące kroki:

    1. W Eksplorator rozwiązań kliknij prawym przyciskiem myszy gacdemo, a następnie kliknij pozycję Właściwości.

    2. Kliknij kartę Podpisywanie , a następnie kliknij, aby zaznaczyć pole wyboru Podpisz zestaw .

    3. Na liście Wybierz klucz silnej nazwy kliknij pozycję <Nowy...>.

    4. Wpisz gackey.snk jako nazwę pliku klucza, wyczyść pole wyboru Chroń mój plik klucza hasłem , a następnie kliknij przycisk OK.

    5. Naciśnij klawisze CTRL+SHIFT+B, aby skompilować projekt.

    Po wykonaniu tych kroków należy wykonać krok 5, aby zainstalować zestaw w usłudze GAC.

  3. Utwórz katalog o nazwie GACKey , aby C:\ można było łatwo zlokalizować klucz i uzyskać dostęp do klucza w wierszu polecenia.

    W przypadku większości użytkowników narzędzia platformy .NET znajdują się w programie C:\Program Files\Microsoft.NET\FrameworkSDK\Bin. Przed wpisaniem następującego polecenia możesz skopiować podobną ścieżkę na komputerze do katalogu bin platformy .NET. Wpisz cd w wierszu polecenia, kliknij prawym przyciskiem myszy, aby wkleić ścieżkę, a następnie naciśnij klawisz ENTER, aby szybko przejść do katalogu, w którym znajduje się narzędzie SN.

    Wpisz następujące polecenie:

    sn -k "C:\GACKey\GACkey.snk"
    
  4. Klucz jest generowany, ale nie jest jeszcze skojarzony z zestawem projektu. Aby utworzyć to skojarzenie, kliknij dwukrotnie plik AssemblyInfo.cs w programie Visual Studio .NET Eksplorator rozwiązań. Ten plik zawiera listę atrybutów zestawu, które są domyślnie uwzględniane podczas tworzenia projektu w programie Visual Studio .NET. Zmodyfikuj AssemblyKeyFile atrybut zestawu w kodzie w następujący sposób:

    [assembly: AssemblyKeyFile('C:\\GACKey\\GACKey.snk') ]
    

    Skompiluj projekt, naciskając klawisze CTRL+SHIFT+B. Nie musisz mieć żadnego dodatkowego kodu, aby zainstalować plik .dll w usłudze GAC.

  5. Plik .dll można zainstalować za pomocą narzędzia Gacutil lub przeciągając plik .dll do odpowiedniego folderu. Jeśli używasz narzędzia Gacutil, możesz użyć polecenia podobnego do następującego:

    gacutil -I "[DriveLetter]:\[PathToBinDirectoryInVSProject]\gac.dll"
    

    Aby przeciągnąć plik, otwórz dwa wystąpienia Eksploratora Windows. W jednym wystąpieniu znajdź lokalizację danych wyjściowych pliku .dll dla projektu konsoli. W drugim wystąpieniu znajdź pozycję c:\<SystemRoot>\Assembly. Następnie przeciągnij plik .dll do folderu Zestaw.

Ukończ listę kodu (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("")]

Weryfikacji

  1. Uruchom program Windows Explorer.
  2. Zlokalizuj C:\SystemRoot\assembly.
  3. Na liście zainstalowanych plików .dll zostanie wyświetlona pozycja GACDemo .

Informacje