Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этой статье содержатся сведения о том, как установить сборку в глобальный кэш сборок в Visual C#.
Исходная версия продукта: Visual C#
Исходный номер базы знаний: 815808
Итоги
В этой статье описывается, как создать строгое имя сборки и как установить файл .dll в глобальном кэше сборок (GAC). С помощью GAC можно совместно использовать сборки во многих приложениях. GAC автоматически устанавливается в среде выполнения .NET. Компоненты обычно хранятся в C:\WINNT\Assembly.
Чтобы установить сборку в GAC, необходимо указать строгое имя сборки. Имя — это криптографический хэш-ключ или подпись. Это строгое имя гарантирует правильное управление версиями компонентов. Это помогает предотвратить конфликт компонентов, имеющих то же имя друг с другом или неправильно используемых приложением.
Требования
- Права администратора на компьютер, на котором устанавливается общая сборка
- Общее знакомство с сборками в .NET.
- Общее знакомство с использованием средств в командной строке.
Глобальный кэш сборок
Чтобы создать небольшой проект библиотеки классов с помощью Visual Studio, создать строгое имя и установить файл .dll проекта в GAC, выполните следующие действия:
В Visual Studio создайте проект библиотеки классов Visual C# и назовите проект GACDemo.
Необходимо использовать строгое имя. Чтобы создать эту пару криптографических ключей, используйте средство строгого имени (Sn.exe). Это средство находится в подкаталоге
\bin, где установлен пакет SDK для разработчиков решений платформа .NET Framework. Средство Sn.exe легко использовать. Оператор командной строки принимает следующую команду.sn -k "[DriveLetter]:\[DirectoryToPlaceKey]\[KeyName].snk"Примечание.
В Visual Studio можно использовать свойства проекта интегрированной среды разработки для создания пары ключей и подписывания сборки. Затем можно пропустить шаг 3 и шаг 4, а также пропустить внесение изменений кода в файл AssemblyInfo.cs .
Чтобы использовать свойства проекта интегрированной среды разработки для создания пары ключей и подписывания сборки, выполните следующие действия.
В Обозреватель решений щелкните правой кнопкой мыши GACDemo и выберите пункт "Свойства".
Щелкните вкладку "Подписывание" и установите флажок "Подписать сборку".
В списке ключей строгого имени нажмите кнопку <"Создать...>".
Введите GACkey.snk в качестве имени файла ключа, снимите флажок "Защитить файл ключа" и нажмите кнопку "ОК".
Нажмите клавиши CTRL+SHIFT+B, чтобы скомпилировать проект.
После выполнения этих действий необходимо выполнить шаг 5, чтобы установить сборку в GAC.
Создайте каталог с именем GACKey
C:\, чтобы легко найти ключ и получить доступ к ключу в командной строке.Для большинства пользователей средства .NET находятся в
C:\Program Files\Microsoft.NET\FrameworkSDK\Bin. Перед вводом следующей команды может потребоваться скопировать этот аналогичный путь на компьютере в каталог bin .NET. Введитеcdв командной строке правой кнопкой мыши, чтобы вставить путь, а затем нажмите клавишу ВВОД, чтобы быстро перейти к каталогу, где находится средство SN.Введите следующую команду:
sn -k "C:\GACKey\GACkey.snk"Ключ создается, но он еще не связан с сборкой проекта. Чтобы создать эту связь, дважды щелкните файл AssemblyInfo.cs в Visual Studio .NET Обозреватель решений. Этот файл содержит список атрибутов сборки, включенных по умолчанию при создании проекта в Visual Studio .NET. Измените
AssemblyKeyFileатрибут сборки в коде следующим образом:[assembly: AssemblyKeyFile('C:\\GACKey\\GACKey.snk') ]Скомпилируйте проект, нажав клавиши CTRL+SHIFT+B. Для установки .dll файла в GAC не требуется дополнительный код.
Файл .dll можно установить с помощью средства Gacutil или перетащите файл .dll в соответствующую папку. Если вы используете средство Gacutil, можно использовать команду, похожую на следующую команду:
gacutil -I "[DriveLetter]:\[PathToBinDirectoryInVSProject]\gac.dll"Чтобы перетащить файл, откройте два экземпляра проводника Windows. В одном экземпляре найдите расположение выходных данных файла .dll для проекта консоли. В другом экземпляре найдите
c:\<SystemRoot>\Assembly. Затем перетащите файл .dll в папку сборки.
Полный список кода (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("")]
Проверка
- Откройте проводник.
- Найдите
C:\SystemRoot\assembly. - В списке установленных .dll файлов отображается GACDemo .