Cómo: Firmar un ensamblado con un nombre seguro

Actualización: noviembre 2007

Kit de desarrollo de software de Windows (SDK) proporciona varias maneras de firmar un ensamblado con un nombre seguro:

  • Con la herramienta Assembly Linker (Al.exe) que proporciona Windows SDK.

  • Usando atributos de ensamblado para insertar la información de nombre seguro en el código. Se puede usar AssemblyKeyFileAttribute o AssemblyKeyNameAttribute, dependiendo de dónde esté ubicado el archivo de clave que se va a utilizar.

    Nota:

    En la versión 2.0 de .NET Framework, algunos compiladores emiten mensajes de advertencia cuando se utilizan atributos.

  • Utilizar las opciones del compilador como /keyfile o /delaysign en C# y Visual Basic, o las opciones del vinculador /KEYFILE o /DELAYSIGN en C++. (Para obtener información sobre la firma retardada, vea Retrasar la firma de un ensamblado.)

Nota:

En Visual Studio 2005, el entorno de desarrollo proporciona las herramientas para firmar los ensamblados. Vea Administrar la firma de ensamblados y manifiestos y Página Firma, Diseñador de proyectos.

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, consulte Cómo: Crear un par de claves privada y pública.

Para crear y firmar un ensamblado con un nombre seguro utilizando la herramienta Assembly Linker

  • En el símbolo del sistema, escriba el siguiente comando:

    al /out:<nombre del ensamblado> <nombre del módulo> /keyfile:<nombre del archivo>

    En este comando, nombre del ensamblado es el nombre del ensamblado que se va a firmar con un nombre seguro, nombre del módulo es el nombre del módulo de código utilizado para crea el ensamblado y nombre de archivo es el nombre del contenedor o archivo que contiene el par de claves.

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

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

Para firmar un ensamblado con un nombre seguro utilizando atributos

  • En un módulo de código, agregue AssemblyKeyFileAttribute o AssemblyKeyNameAttribute, especificando el nombre del archivo o contenedor que contiene el par de claves que se debe utilizar al firmar el ensamblado con un nombre seguro.

En el siguiente código de ejemplo, se utiliza el atributo AssemblyKeyFileAttribute con un archivo de claves denominado sgKey.snk, ubicado en el directorio en el que se compila el ensamblado. Se supone que el ensamblado se compila utilizando los compiladores de línea de comandos vbc.exe y csc.exe.

<Assembly:AssemblyKeyFileAttribute("sgKey.snk")>
[assembly:AssemblyKeyFileAttribute(@"sgKey.snk")]
Nota:

En entornos de desarrollo como Visual Studio, puede que no se compile el ensamblado en el directorio del proyecto. Por ejemplo, algunas versiones de Visual Studio compilan los proyectos de C# en un subdirectorio bin\Debug. En cuyo caso, la ruta de acceso en el ejemplo de código sería "..\\..\\sgKey.snk". En Visual Studio 2005 el archivo de claves de C# se puede especificar en la configuración del proyecto.

También se puede retrasar la firma de un ensamblado en el momento de la compilación. Para obtener más información, vea Retrasar la firma de un ensamblado.

Al firmar un ensamblado con un nombre seguro, la herramienta Assembly Linker (Al.exe) busca el archivo de clave en relación con el directorio actual y el directorio de salida. Si se usan compiladores de la línea de comandos, no hay más que copiar la clave en el directorio actual que contenga los módulos de código.

Vea también

Tareas

Cómo: Crear un par de claves privada y pública

Conceptos

Retrasar la firma de un ensamblado

Referencia

Página Firma, Diseñador de proyectos

Otros recursos

Crear y utilizar ensamblados con nombre seguro

Administrar la firma de ensamblados y manifiestos