Uso de Visual C# para instalar un ensamblado en la caché global de ensamblados

En este artículo se proporciona información sobre cómo instalar un ensamblado en la caché global de ensamblados en Visual C#.

Versión original del producto: Visual C#
Número de KB original: 815808

Resumen

En este artículo se describe cómo generar un nombre seguro para un ensamblado y cómo instalar un archivo .dll en la caché global de ensamblados (GAC). Con la GAC, puede compartir ensamblados entre muchas aplicaciones. La GAC se instala automáticamente con el entorno de ejecución de .NET. Los componentes se almacenan normalmente en C:\WINNT\Assembly.

Para instalar un ensamblado en la GAC, debe asignar un nombre seguro al ensamblado. El nombre es una clave hash criptográfica o una firma. Este nombre seguro garantiza el control de versiones de componentes correcto. Esto ayuda a evitar que los componentes que tienen el mismo nombre entren en conflicto entre sí o que una aplicación consumidora los use incorrectamente.

Requisitos

  • Derechos de administrador en el equipo donde se está instalando el ensamblado compartido
  • Familiaridad general con ensamblados en .NET.
  • Familiaridad general con el uso de herramientas en el símbolo del sistema.

Caché global de ensamblados

Para crear un proyecto de biblioteca de clases pequeño mediante Visual Studio, generar un nombre seguro e instalar el archivo .dll del proyecto en la GAC, siga estos pasos:

  1. En Visual Studio, cree un nuevo proyecto de biblioteca de clases de Visual C# y asigne al proyecto el nombre GACDemo.

  2. Debe usar un nombre seguro. Para generar este par de claves criptográficas, use la herramienta Nombre seguro (Sn.exe). Esta herramienta se encuentra en el \bin subdirectorio donde está instalado el Kit para desarrolladores de soluciones (SDK) de .NET Framework. La herramienta Sn.exe es fácil de usar. La instrucción de línea de comandos toma lo siguiente

    sn -k "[DriveLetter]:\[DirectoryToPlaceKey]\[KeyName].snk"
    

    Nota:

    En Visual Studio, puede usar las propiedades del proyecto ide para generar un par de claves y firmar el ensamblado. A continuación, puede omitir los pasos 3 y 4 y también omitir la realización de cambios de código en el archivo AssemblyInfo.cs .

    Para usar las propiedades del proyecto ide para generar un par de claves y firmar el ensamblado, siga estos pasos:

    1. En Explorador de soluciones, haga clic con el botón derecho en GACDemoy, a continuación, haga clic en Propiedades.

    2. Haga clic en la pestaña Firma y, a continuación, haga clic para activar la casilla Firmar el ensamblado .

    3. En la lista Elegir una clave de nombre seguro , haga clic en <Nuevo...>.

    4. Escriba GACkey.snk como nombre de archivo de clave, desactive la casilla Proteger mi archivo de clave con una contraseña y, a continuación, haga clic en Aceptar.

    5. Presione CTRL+MAYÚS+B método abreviado de teclado para compilar el proyecto.

    Después de seguir estos pasos, debe seguir el paso 5 para instalar el ensamblado en la GAC.

  3. Cree un directorio denominado GACKey en C:\ para que pueda localizar fácilmente la clave y acceder a ella en el símbolo del sistema.

    Para la mayoría de los usuarios, las herramientas de .NET se encuentran en C:\Program Files\Microsoft.NET\FrameworkSDK\Bin. Antes de escribir el siguiente comando, es posible que desee copiar esta ruta de acceso similar en el equipo en el directorio bin de .NET. Escriba cd en el símbolo del sistema, haga clic con el botón derecho para pegar la ruta de acceso y, a continuación, presione ENTRAR para cambiar rápidamente al directorio donde se encuentra la herramienta SN.

    Escriba el siguiente comando:

    sn -k "C:\GACKey\GACkey.snk"
    
  4. Se genera una clave, pero aún no está asociada al ensamblado del proyecto. Para crear esta asociación, haga doble clic en el archivo AssemblyInfo.cs en visual Studio .NET Explorador de soluciones. Este archivo tiene la lista de atributos de ensamblado que se incluyen de forma predeterminada cuando se crea un proyecto en Visual Studio .NET. Modifique el atributo de AssemblyKeyFile ensamblado en el código de la siguiente manera:

    [assembly: AssemblyKeyFile('C:\\GACKey\\GACKey.snk') ]
    

    Compile el proyecto presionando CTRL+MAYÚS+B. No es necesario tener ningún código adicional para instalar un archivo .dll en la GAC.

  5. Puede instalar el archivo .dll mediante la herramienta Gacutil o arrastrando el archivo .dll a la carpeta adecuada. Si usa la herramienta Gacutil, puede usar un comando similar al siguiente:

    gacutil -I "[DriveLetter]:\[PathToBinDirectoryInVSProject]\gac.dll"
    

    Para arrastrar el archivo, abra dos instancias del Explorador de Windows. En una instancia, busque la ubicación de la salida del archivo .dll para el proyecto de consola. En la otra instancia, busque c:\<SystemRoot>\Assembly. A continuación, arrastre el archivo .dll a la carpeta Ensamblado.

Lista de código completa (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("")]

Verificación

  1. Inicie el Explorador de Windows.
  2. Busque C:\SystemRoot\assembly.
  3. Verá GACDemo en la lista de archivos .dll instalados.

Referencias