W tym artykule jest opisany sposób generowania silnej nazwy zestawu oraz instalacji pliku DLL w buforze Global Assembly Cache (GAC). Za pomocą buforu GAC zestawy mogą być współużytkowane przez wiele aplikacji. Bufor GAC jest instalowany automatycznie wraz z plikami wykonywalnymi .NET. Składniki są zazwyczaj przechowywane w katalogu C:\WINNT\Assembly.
Aby zainstalować zestaw w buforze GAC, trzeba nadać zestawowi silną nazwę. Nazwa to kryptograficzny klucz mieszający lub podpis. Silna nazwa gwarantuje poprawne przypisywanie wersji składników. Pozwala to zapobiec występowaniu konfliktów między składnikami o identycznych nazwach lub niewłaściwemu użyciu składnika przez odbierającą aplikację.
Wymagania
Na poniższej liście wymieniono zalecany sprzęt, oprogramowanie, infrastrukturę sieci i wymagane dodatki Service Pack:
- Prawa administracyjne do komputera, na którym jest zainstalowany współużytkowany zestaw
W tym artykule założono, że użytkownik zapoznał się z następującymi zagadnieniami:
- Ogólna znajomość zestawów w środowisku .NET lub programie Visual Studio 2005
- Ogólna znajomość posługiwania się narzędziami wiersza polecenia
Bufor Global Assembly Cache
Aby utworzyć mały projekt Class Library za pomocą programu Visual Studio .NET lub Visual Studio 2005, wygenerować silną nazwę i zainstalować plik dll projektu w buforze GAC, wykonaj następujące kroki:
- W programie Visual Studio .NET lub Visual Studio 2005 utwórz nowy projekt Visual C# Class Library i nadaj mu nazwę GACDemo.
- Musisz użyć silnej nazwy. Do wygenerowania kryptograficznej pary kluczy użyj narzędzia SN. Znajduje się ono w podkatalogu \bin folderu, w którym jest zainstalowany zestaw .NET Framework Solution Developer Kit (SDK). Używanie narzędzia SN jest proste. Instrukcja wiersza polecenia ma następującą postać:
sn -k "[LiteraDysku]:\[katalog_klucza]\[nazwa_klucza].snk"
- Utwórz katalog o nazwie GACKey na dysku C:\, aby można było łatwo zlokalizować klucz i uzyskać dostęp do klucza z wiersza polecenia.
Uwaga: W przypadku większości użytkowników narzędzia .NET znajdują się w katalogu C:\Program Files\Microsoft.NET\FrameworkSDK\Bin. Przed wpisaniem poniższego polecenia SN można skopiować podobną ścieżkę do katalogu bin narzędzi .NET na używanym komputerze. W wierszu polecenia wpisz cd i 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ący tekst:sn -k "C:\GACKey\GACkey.snk"
- Wygenerowany klucz nie będzie jeszcze skojarzony z zestawem projektu. Aby utworzyć skojarzenie, w oknie Solution Explorer programu Visual Studio .NET kliknij dwukrotnie plik AssemblyInfo.cs. Ten plik zawiera listę atrybutów zestawu dołączanych domyślnie w czasie tworzenia projektu w programie Visual Studio .NET. Zmodyfikuj atrybut AssemblyKeyFile zestawu w następujący sposób:
[assembly: AssemblyKeyFile("C:\\GACKey\\GACKey.snk")]
Skompiluj projekt przez naciśnięcie klawiszy CTRL+SHIFT+B. Do zainstalowania pliku dll w buforze GAC nie jest potrzebny dodatkowy kod. - Plik dll można zainstalować za pomocą narzędzia Gacutil lub przez przeciągnięcie pliku dll do odpowiedniego katalogu. W przypadku korzystania z narzędzia Gacutil można zastosować następujące polecenie:
gacutil -I "[LiteraDysku]:\[ScieżkaDoKataloguBinProjektuVS]\gac.dll"
Jeśli chcesz przeciągnąć plik, użyj Eksploratora Windows. Otwórz dwa wystąpienia Eksploratora Windows. W jednym znajdź lokalizację wynikowego pliku dll projektu konsoli. W drugim wystąpieniu znajdź lokalizację c:\[SystemRoot]\Assembly.
Przeciągnij plik dll do folderu Assembly.
Pełny kod (AssemblyInfo.cs)
using System.Reflection;
using System.Runtime.CompilerServices;
//
// Ogólne informacje dotyczące zestawu są kontrolowane za pośrednictwem następującego
// zestawu atrybutów. Zmień wartości tych atrybutów, aby zmodyfikować informacje
// odnoszące się do zestawu.
//
[assembly: AssemblyTitle("")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("")]
[assembly: AssemblyCopyright("")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
//
// Informacje o wersji zestawu są zbierane na podstawie następujących wartości:
//
// Główny numer wersji
// Podrzędny numer wersji
// Numer kompilacji
// Poprawka
//
// Można określić wszystkie wartości lub pozostawić domyślny numer kompilacji i poprawki
// za pomocą znaku '*', tak jak pokazano poniżej:
[assembly: AssemblyVersion("1.0.*")]
//
// Aby podpisać zestaw, trzeba określić klucz do użycia. Zapoznaj się z dokumentacją
// systemu Microsoft .NET Framework, aby uzyskać więcej informacji na temat podpisywania zestawów.
//
// Użyj następujących atrybutów, aby kontrolować klucz użyty do podpisania.
//
// Uwagi:
// (*) Jeśli klucz nie będzie określony, zestaw nie zostanie podpisany.
// (*) Wpis KeyName odnosi się do klucza zainstalowanego przez dostawcę usług
// kryptograficznych (CSP) na używanym komputerze. Wpis KeyFile określa plik
// zawierający klucz.
// (*) Jeśli są określone obie wartości KeyFile i KeyName, dochodzi do
// następującego procesu:
// (1) Jeśli wartość KeyName można znaleźć w CSP, będzie użyty ten klucz.
// (2) Jeśli wartość KeyName nie istnieje, a istnieje wartość KeyFile, klucz z pliku
// KeyFile zostanie zainstalowany w CSP i użyty.
// (*) Do utworzenia wartości KeyFile można użyć narzędzia sn.exe (Strong Name).
// Przy określaniu wartości KeyFile lokalizacja KeyFile musi być względna
// w stosunku do katalogu wyjściowego projektu, którym jest katalog
// %Katalog Projektu%\obj\<configuration>. Na przykład jeśli wartość KeyFile znajduje się
// w katalogu projektu, trzeba określić atrybut AssemblyKeyFile
// jako [assembly: AssemblyKeyFile("..\\..\\mykey.snk")]
// (*) Delay Signing to zaawansowana opcja – zapoznaj się z dokumentacją systemu Microsoft .NET Framework,
// aby uzyskać więcej informacji na ten temat.
//
[assembly: AssemblyDelaySign(false)]
[assembly: AssemblyKeyFile("C:\\GACKey\\GACKey.snk")]
[assembly: AssemblyKeyName("")]
Weryfikacja
- Uruchom Eksploratora Windows.
- Zlokalizuj zestaw C:\SystemRoot\.
- Na liście zainstalowanych plików dll będzie widoczny plik GACDemo.
Aby uzyskać więcej informacji, odwiedź następujące witryny firmy Microsoft w sieci Web:
Numer ID artykułu: 815808 - Ostatnia weryfikacja: 13 maja 2007 - Weryfikacja: 3.8
Informacje zawarte w tym artykule dotyczą:
- Microsoft Visual C# 2005
- Microsoft Visual C# .NET 2003 Standard Edition
- Microsoft Visual C# .NET 2002 Standard Edition
- Microsoft ASP.NET 1.0
- Microsoft ASP.NET 1.1
| kbcodesign kbcommandline kbnamespace kbhowtomaster KB815808 |