Procedimiento para firmar un ensamblado con un nombre seguro

Nota

Aunque .NET Core admite ensamblados con nombre seguro, y todos los ensamblados de la biblioteca .NET Core están firmados, la mayoría de los ensamblados de terceros no necesitan nombres seguros. Para obtener más información, consulte Strong Name Signing (Firma con nombre seguro) en GitHub.

Existen varias formas de firmar un ensamblado con un nombre seguro:

  • Mediante la página Compilar>Strong naming (Nombres seguros) del diseñador de proyectos de un proyecto en Visual Studio. Esta es la forma más sencilla y cómoda de firmar un ensamblado con un nombre seguro.
  • Mediante el uso de Assembly Linker (Al.exe) para vincular un módulo de código de .NET Framework (un archivo .netmodule) a un archivo de claves.
  • Mediante el uso de atributos de ensamblado para insertar la información de nombre seguro en el código. Se puede usar el atributo AssemblyKeyFileAttribute o AssemblyKeyNameAttribute , dependiendo de dónde esté ubicado el archivo de claves que se va a utilizar.
  • Mediante el uso de opciones del compilador.

Es necesario disponer de un par de claves criptográficas para firmar un ensamblado con un nombre seguro. Para obtener más información sobre la creación de un par de claves, vea Cómo: Crear un par de claves privada y pública.

Creación y firma de un ensamblado con un nombre seguro mediante el uso de Visual Studio

  1. En el Explorador de soluciones, abra el menú contextual del proyecto y luego elija Propiedades.
  2. En la pestaña Compilar encontrará un nodo Nombres seguros.
  3. Active la casilla Firmar el ensamblado, que expande las opciones.
  4. Seleccione el botón Examinar para elegir una ruta de Archivo de clave de nombre seguro.

Nota

Para retrasar la firma de un ensamblado, elija un archivo de clave pública.

Visual Studio 2022: propiedades del proyecto, sección Compilación y Nombres seguros.

Creación y firma de un ensamblado con un nombre seguro mediante el uso de la herramienta Assembly Linker

Abra el Símbolo del sistema para desarrolladores de Visual Studio o PowerShell de Visual Studio para desarrolladores y escriba el siguiente comando:

al /out:<assemblyName><moduleName> /keyfile:<keyfileName>

Donde:

  • assemblyName es el nombre del ensamblado seguro con firma (un archivo .dll o .exe) que emitirá la herramienta Assembly Linker.
  • moduleName es el nombre de un módulo de código de .NET Framework (un archivo .netmodule) que incluye uno o varios tipos. Puede crear un archivo .netmodule si compila el código con el modificador /target:module en C# o Visual Basic.
  • keyfileName es el nombre del contenedor o del archivo que incluye el par de claves. Assembly Linker interpreta una ruta de acceso relativa en relación con el directorio actual.

En el ejemplo siguiente se firma el ensamblado MyAssembly.dll con un nombre seguro mediante el uso del archivo de clave sgKey.snk.

al /out:MyAssembly.dll MyModule.netmodule /keyfile:sgKey.snk

Para obtener más información sobre esta herramienta, consulte el tema sobre Assembly Linker.

Firma de un ensamblado con un nombre seguro mediante el uso de atributos

  1. Agregue el atributo System.Reflection.AssemblyKeyFileAttribute o AssemblyKeyNameAttribute al archivo de código fuente y especifique el nombre del archivo o contenedor donde se incluye el par de claves que se va a usar al firmar el ensamblado con un nombre seguro.

  2. Compile el archivo de código fuente normalmente.

    Nota

    Los compiladores de C# y Visual Basic emiten advertencias del compilador (CS1699 y BC41008, respectivamente) cuando encuentran el atributo AssemblyKeyFileAttribute o AssemblyKeyNameAttribute en el código fuente. Las advertencias se pueden omitir.

En el ejemplo siguiente se usa el atributo AssemblyKeyFileAttribute con un archivo de claves denominado keyfile.snk, que está ubicado en el directorio en el cual se compila el ensamblado.

[assembly:AssemblyKeyFileAttribute("keyfile.snk")];
[assembly:AssemblyKeyFileAttribute("keyfile.snk")]
<Assembly:AssemblyKeyFileAttribute("keyfile.snk")>

También se puede retrasar la firma de un ensamblado al compilar el archivo de código fuente. Para obtener más información, vea Retraso de la firma de un ensamblado.

Firma de un ensamblado con un nombre seguro mediante el uso del compilador

Compile el archivo o archivos de código fuente con la opción del compilador /keyfile o de /delaysign en C# y Visual Basic, o la opción del vinculador /KEYFILE o /DELAYSIGN en C++. Tras el nombre de la opción, agregue dos puntos y el nombre del archivo de claves. Si se usan compiladores de la línea de comandos, se puede copiar el archivo de claves en el directorio que contiene los archivos de código fuente.

Para obtener información sobre la firma retardada, vea Retraso de la firma de un ensamblado.

En el ejemplo siguiente se usa el compilador de C# y se firma el ensamblado UtilityLibrary.dll con un nombre seguro mediante el archivo de claves sgKey.snk.

csc /t:library UtilityLibrary.cs /keyfile:sgKey.snk

Vea también