Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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:
W programie Visual Studio utwórz nowy projekt Biblioteka 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 czynnościsn -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:
W Eksplorator rozwiązań kliknij prawym przyciskiem myszy pozycję GACDemo, a następnie kliknij polecenie Właściwości.
Kliknij kartę Podpisywanie , a następnie kliknij, aby zaznaczyć pole wyboru Podpisz zestaw .
Na liście Wybierz silny klucz nazwy kliknij pozycję <Nowy...>.
Wpisz GACkey.snk jako nazwę pliku klucza, wyczyść pole wyboru Chroń plik klucza hasłem , a następnie kliknij przycisk OK.
Naciśnij CTRL+SHIFT+B, aby skompilować projekt.
Po wykonaniu tych kroków nadal należy wykonać krok 5, aby zainstalować zestaw w GAC.
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. Wpiszcdpolecenie 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"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
AssemblyKeyFileatrybut 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.
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>\AssemblyNastę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
- Uruchom program Windows Explorer.
- Znajdź plik
C:\SystemRoot\assembly. - Na liście zainstalowanych plików .dll zostanie wyświetlona biblioteka GACDemo .