Udostępnij za pośrednictwem


Instalowanie zestawu w globalnej pamięci podręcznej zestawów za pomocą 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 sposobu instalowania pliku .dll w globalnej pamięci podręcznej zestawów (GAC). Dzięki funkcji GAC można udostępniać zestawy w wielu aplikacjach. Funkcja GAC jest instalowana automatycznie przy użyciu ś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 skrótem kryptograficznym lub podpisem. Ta silna nazwa zapewnia prawidłowe przechowywanie wersji składników. Pomaga to zapobiec występowaniu konfliktów między składnikami o tej samej nazwie lub niepoprawnie używanym przez aplikację zużywającą dane.

Wymagania

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

Global Assembly Cache

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

  1. W programie Visual Studio utwórz nowy projekt Biblioteka 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 czynności

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

    Uwaga 16.

    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 pozycję GACDemo, a następnie kliknij polecenie Właściwości.

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

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

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

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

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

  3. Utwórz katalog o nazwie GACKey w C:\ pliku , aby 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 C:\Program Files\Microsoft.NET\FrameworkSDK\Binlokalizacji . Przed wpisem następującego polecenia możesz skopiować tę podobną ścieżkę na komputerze do katalogu bin platformy .NET. Wpisz cd polecenie w wierszu polecenia, kliknij prawym przyciskiem myszy, aby wkleić ścieżkę, a następnie naciśnij ENTER, aby szybko zmienić katalog, 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 CTRL+SHIFT+B. Nie trzeba mieć żadnego dodatkowego kodu, aby zainstalować plik .dll w 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 przypominającego następujące elementy:

    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 innym wystąpieniu znajdź .c:\<SystemRoot>\Assembly Następnie przeciągnij plik .dll do folderu Zestaw.

Kompletna lista 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("")]

Weryfikacja

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

Informacje