Установка сборки в глобальный кэш сборок с помощью Visual C#
В этой статье содержатся сведения об установке сборки в глобальный кэш сборок в 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 в папку Assembly.
Полный список кода (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
. - GACDemo отображается в списке установленных .dll файлов.
Ссылки
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по