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:
W programie Visual Studio utwórz nowy projekt biblioteki klas języka Visual C# i nadaj projektowi nazwę GACDemo.
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 elementysn -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:
W Eksplorator rozwiązań kliknij prawym przyciskiem myszy gacdemo, a następnie kliknij pozycję Właściwości.
Kliknij kartę Podpisywanie , a następnie kliknij, aby zaznaczyć pole wyboru Podpisz zestaw .
Na liście Wybierz klucz silnej nazwy kliknij pozycję <Nowy...>.
Wpisz gackey.snk jako nazwę pliku klucza, wyczyść pole wyboru Chroń mój plik klucza hasłem , a następnie kliknij przycisk OK.
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.
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. Wpiszcd
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"
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.
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
- Uruchom program Windows Explorer.
- Zlokalizuj
C:\SystemRoot\assembly
. - Na liście zainstalowanych plików .dll zostanie wyświetlona pozycja GACDemo .
Informacje
Opinia
https://aka.ms/ContentUserFeedback.
Dostępne już wkrótce: W 2024 r. będziemy stopniowo wycofywać zgłoszenia z serwisu GitHub jako mechanizm przesyłania opinii na temat zawartości i zastępować go nowym systemem opinii. Aby uzyskać więcej informacji, sprawdź:Prześlij i wyświetl opinię dla