Jak zainstalować zestaw w buforze Global Assembly Cache w programie Visual C#

Tłumaczenia artykułów Tłumaczenia artykułów
Numer ID artykułu: 815808 - Zobacz jakich produktów dotyczą zawarte w tym artykule porady.
Rozwiń wszystko | Zwiń wszystko

Na tej stronie

Streszczenie

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:
  1. W programie Visual Studio .NET lub Visual Studio 2005 utwórz nowy projekt Visual C# Class Library i nadaj mu nazwę GACDemo.
  2. 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"
  3. 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"
  4. 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.
  5. 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

  1. Uruchom Eksploratora Windows.
  2. Zlokalizuj zestaw C:\SystemRoot\.
  3. Na liście zainstalowanych plików dll będzie widoczny plik GACDemo.

Materiały referencyjne

Aby uzyskać więcej informacji, odwiedź następujące witryny firmy Microsoft w sieci Web:
Instalowanie zestawu w buforze Global Assembly Cache
http://msdn2.microsoft.com/en-us/library/dkkx7f79(vs.71).aspx
Bufor Global Assembly Cache
http://msdn2.microsoft.com/en-us/library/yf1d93sz(vs.71).aspx
Narzędzie Global Assembly Cache
http://msdn2.microsoft.com/en-us/library/ex0ss12c(vs.71).aspx

Właściwości

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
Słowa kluczowe: 
kbcodesign kbcommandline kbnamespace kbhowtomaster KB815808

Przekaż opinię

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com