Compartir a través de


Instrumentar y volver a firmar ensamblados

Actualización: noviembre 2007

Si necesita recopilar información de cobertura de código mientras prueba el código en un ensamblado, primero debe instrumentar ese ensamblado. El proceso de instrumentación agrega código que genera información de cobertura de código dentro del ensamblado. Para obtener información sobre cómo instrumentar ensamblados para cobertura de código, vea Cómo: Obtener datos de cobertura de código.

Sin embargo, si el ensamblado que se va a probar estuviese firmado con un nombre seguro, la modificación del código que produce la instrumentación invalida la firma. Por tanto, Visual Studio intenta volver a firmar el ensamblado de forma automática inmediatamente después del paso de instrumentación.

Nota:

Para obtener más información acerca de los pasos que tienen lugar en una ejecución de prueba, vea Información general sobre la implementación de pruebas.

Si el proceso de volver a firmar el ensamblado se realiza correctamente, probablemente la ejecución de prueba finalizará y generará resultados correctamente. Si la firma no se realiza correctamente, se generará un error como el siguiente:

Strong name verification failed for the instrumented assembly 'SignedLibrary, Version=1.0.0.0, Culture=neutral, PublicKeyToken=1696e096eba75082'. Please ensure that the right key file for re-signing after instrumentation is specified in the test run configuration.

Para solucionarlo, pruebe con el siguiente procedimiento:

  • Volver a firmar el ensamblado. Si tiene el archivo de clave que se utilizó para firmar el ensamblado, puede suministrarlo para que Visual Studio pueda volver a firmar el ensamblado automáticamente.

  • Deshabilitar la comprobación de la firma. Puede deshabilitar la comprobación de la firma en el equipo en el que se va a probar el ensamblado. Esta acción sólo se aplicará a los ensamblados que especifique.

Volver a firmar el ensamblado

En la página Cobertura de código del editor de configuraciones de ejecución de prueba, puede especificar un archivo de clave para volver a firmar los archivos binarios después de la instrumentación. Si va a probar varios ensamblados que se han firmado, Visual Studio intentará volver a firmar todos los ensamblados con nombre seguro que se firmaron con el archivo de clave que especifique.

En el editor de configuraciones de ejecución de prueba, puede especificar el archivo de clave que utilizará Visual Studio para volver a firmar los ensamblados con nombre seguro. Para obtener más información, vea el procedimiento "Volver a firmar ensamblados" en el tema Cómo: Obtener datos de cobertura de código. Al especificar un archivo de clave, se agrega un paso para volver a firmar ensamblados al proceso de ejecución de prueba. Visual Studio determina automáticamente qué ensamblados se deben volver a firmar mediante el archivo de clave que ha especificado. Se volverán a firmar todos los ensamblados que se puedan volver a firmar utilizando ese archivo de clave.

Nota:

Los ensamblados sólo se pueden volver a firmar utilizando un archivo de clave, no un nombre de clave.

El proceso de volver a firmar los ensamblados se produce de manera incompleta o no se produce en los casos siguientes:

  • Si el archivo de clave no está disponible, Visual Studio no puede volver a firmar el ensamblado. Puede volver a generar el archivo de clave y, después, intentar firmar de nuevo el ensamblado.

  • Si el archivo de clave está protegido mediante contraseña, se producirá un error al volver a firmar el ensamblado.

  • Sólo se admite un archivo de clave por cada ejecución de prueba. Tomemos como ejemplo una ejecución de prueba que haga referencia a varios ensamblados. Algunos de estos ensamblados se firmaron utilizando un archivo de clave mientras que para otros se utilizó otro diferente. Dado que sólo se puede elegir un archivo de clave, no se volverán a firmar los ensamblados que necesiten el otro archivo de clave y será necesario volver a firmarlos manualmente. Si queda sin firmar algún ensamblado, se genera un error en el nivel de ejecución de prueba. En este caso, se podría deshabilitar la comprobación de la firma, como se describe en Deshabilitar la comprobación de la firma.

Deshabilitar la comprobación de la firma

Si se produce un error al volver a firmar un ensamblado (por ejemplo, porque no está disponible el archivo de clave correcto), se puede deshabilitar la comprobación de la firma, para este ensamblado, mientras dure la ejecución de prueba. Para ello, se utiliza Herramienta de nombre seguro (Sn.exe) con la opción –Vr, como se muestra aquí:

SN -Vr <nombre del ensamblado>

De esta manera se deshabilita la comprobación del nombre seguro, sólo para el ensamblado especificado, en el equipo en el que se ejecuta el comando.

Nota:

Si ejecuta pruebas de manera remota y necesita deshabilitar la comprobación de la firma, debe incluir el comando SN.exe en las secuencias de comandos de instalación y de limpieza que se ejecutarán en el equipo remoto.

Este procedimiento sólo es posible si posee los permisos necesarios.

Una vez finalizada la ejecución de prueba, vuelva a habilitar la comprobación de la firma. Para ello, utilice el comando SN.exe con la opción –Vu, como se muestra aquí:

SN -Vu <nombre del ensamblado>

El método recomendado para deshabilitar y volver a habilitar la comprobación de la firma es utilizar el comando SN.exe en las secuencias de comandos. Puede deshabilitar la comprobación en una secuencia de comandos de instalación y volver a habilitarla en una secuencia de comandos de limpieza.

Nota:

Es importante que vuelva a habilitar la comprobación de la firma. Si la comprobación de la firma permanece deshabilitada, puede provocar problemas de seguridad.

Después de insertar los comandos SN en archivos de secuencias de comandos independientes, especifique los archivos de secuencias de comandos en la página Secuencias de comandos de instalación y limpieza del editor de configuraciones de ejecución de prueba. Para obtener más información, vea Cómo: Especificar la configuración de una ejecución de prueba. Para obtener información acerca del orden en que tienen lugar éstos y otros pasos en una ejecución de prueba, vea Información general sobre la implementación de pruebas.

Vea también

Tareas

Cómo: Especificar la configuración de una ejecución de prueba

Cómo: Obtener datos de cobertura de código

Cómo: Firmar un ensamblado con un nombre seguro

Conceptos

Información general sobre la implementación de pruebas

Ensamblados con nombre seguro

Referencia

Herramienta de nombre seguro (Sn.exe)