Partager via


Instrumentation et nouvelle signature d'assemblys

Mise à jour : novembre 2007

Si vous devez rassembler des informations de couverture du code pendant que vous testez du code dans un assembly, vous devez d'abord instrumenter cet assembly. Le processus d'instrumentation ajoute du code qui génère des informations de couverture du code dans l'assembly. Pour plus d'informations sur l'instrumentation des assemblys pour la couverture du code, consultez Comment : obtenir des données de couverture du code.

Mais si l'assembly que vous testez a été signé avec un nom fort, la modification de code provoquée par l'instrumentation invalide sa signature. Visual Studio essaie donc automatiquement de signer de nouveau l'assembly immédiatement après l'étape d'instrumentation.

Remarque :

Pour plus d'informations sur les étapes d'une série de tests, consultez Vue d'ensemble du déploiement de test.

Si la nouvelle signature réussit, la série de tests finira probablement et produira correctement des résultats. Si la signature échoue, une erreur telle que celle qui suit est générée :

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.

Pour remédier à ce problème, essayez les opérations suivantes :

  • Signer de nouveau l'assembly. Si vous disposez du fichier de clé qui a été utilisé pour signer l'assembly, vous pouvez le fournir afin que Visual Studio puisse automatiquement signer de nouveau l'assembly.

  • Désactiver la vérification de signature. Vous pouvez désactiver la vérification de la signature sur l'ordinateur sur lequel vous testez l'assembly. Cette action s'applique uniquement aux assemblys que vous spécifiez.

Signer de nouveau l'assembly

Sur la page Couverture du code de l'éditeur de configuration de série de tests, vous pouvez spécifier un fichier de clé pour signer de nouveau les fichiers binaires après l'instrumentation. Si vous testez plusieurs assemblys qui ont été signés, Visual Studio essaiera de signer de nouveau tous les assemblys avec nom fort qui ont été signés avec le fichier de clé que vous spécifiez.

Sur l'éditeur de configuration de série de tests, vous pouvez spécifier un fichier de clé que Visual Studio utilisera pour signer de nouveau les assemblys avec nom fort. Pour plus d'informations, consultez la procédure « Nouvelle signature d'assemblys » dans la rubrique Comment : obtenir des données de couverture du code. La spécification d'un fichier de clé ajoute une étape de nouvelle signature au processus de série de tests. Visual Studio détermine automatiquement quels assemblys doivent être de nouveau signés en utilisant le fichier de clé que vous avez spécifié. Tous les assemblys qui peuvent être de nouveau signés en utilisant ce fichier de clé le seront.

Remarque :

Les assemblys ne peuvent être de nouveau signés qu'à l'aide d'un fichier de clé, et non d'un nom de clé.

La nouvelle signature d'assemblys se produit de manière incomplète ou pas du tout dans les cas suivants :

  • Si le fichier de clé n'est pas disponible, Visual Studio ne peut pas signer de nouveau l'assembly. Vous pouvez essayer de régénérer le fichier de clé, puis réessayer de signer de nouveau l'assembly.

  • Si le fichier de clé est protégé par un mot de passe, la nouvelle signature échoue.

  • Un seul fichier de clé est pris en charge par série de tests. Prenons l'exemple d'une série de tests faisant référence à plusieurs assemblys. Certains de ces assemblys ont été signés à l'aide d'un fichier de clé et d'autres à l'aide d'un fichier de clé différent. Comme vous ne pouvez choisir qu'un seul fichier de clé, les assemblys ayant besoin de l'autre fichier de clé ne peuvent pas être de nouveau signés, à moins que vous ne procédiez manuellement. Si certains assemblys sont laissés sans signature, une erreur est générée au niveau de la série de tests. Dans ce cas, vous pouvez choisir de désactiver la vérification de signature, comme décrit dans Désactiver la vérification de signature.

Désactiver la vérification de signature

Si la nouvelle signature échoue (par exemple si le fichier de clé approprié n'est pas disponible), vous pouvez choisir de désactiver la vérification de signature pour cet assembly, le temps de votre série de tests. Pour cela, utilisez l'Outil Strong Name Tool (Sn.exe) avec l'option –Vr, comme indiqué ici :

SN -Vr <nom de l'assembly>

Cela désactive la vérification des noms forts, pour l'assembly spécifié uniquement, sur l'ordinateur sur lequel vous exécutez la commande.

Remarque :

Si vous effectuez des tests à distance et que vous deviez désactiver la vérification de signature, vous devez inclure la commande SN.exe dans les scripts d'installation et de nettoyage qui seront exécutés sur l'ordinateur distant.

Vous ne pouvez le faire que si vous disposez des autorisations suffisantes.

À l'issue de la série de tests, réactivez la vérification de signature. Pour cela, utilisez la commande SN.exe avec l'option –Vu, comme indiqué ici :

SN -Vu <nom de l'assembly>

L'utilisation des commandes SN.exe dans les scripts est recommandée pour désactiver et réactiver la vérification de signature. Vous pouvez désactiver la vérification dans un script d'installation et la réactiver dans un script de nettoyage.

Remarque :

Il est important que vous réactiviez la vérification de signature. Si la vérification de signature reste désactivée, cela peut provoquer des problèmes de sécurité.

Après avoir placé les commandes SN dans des fichiers de script séparés, spécifiez les fichiers de script sur la page Scripts d'installation et de nettoyage de l'éditeur de configuration de série de tests. Pour plus d'informations, consultez Comment : spécifier la configuration d'une série de tests. Pour plus d'informations sur l'ordre dans lequel ces étapes et d'autres se produisent dans une série de tests, consultez Vue d'ensemble du déploiement de test.

Voir aussi

Tâches

Comment : spécifier la configuration d'une série de tests

Comment : obtenir des données de couverture du code

Comment : signer un assembly avec un nom fort

Concepts

Vue d'ensemble du déploiement de test

Assemblys avec nom fort

Référence

Outil Strong Name Tool (Sn.exe)