Instrumentieren und erneutes Signieren von Assemblys

Aktualisiert: November 2007

Wenn Informationen zur Codeabdeckung während des Testens des Codes in einer Assembly erfasst werden müssen, ist zunächst die Instrumentation der Assembly erforderlich. Bei der Instrumentation wird Code hinzugefügt, mit dem in der Assembly Codeabdeckungsinformationen generiert werden. Informationen zur Instrumentation von Assemblys für die Codeabdeckung finden Sie unter Gewusst wie: Erfassen von Codeabdeckungsdaten.

Wenn die zu testende Assembly jedoch mit einem starken Namen signiert ist, wird die Signatur aufgrund der Codeänderung beim Instrumentieren ungültig. Visual Studio versucht daher automatisch, die Assembly nach der Instrumentation sofort erneut zu signieren.

Hinweis:

Weitere Informationen zu den einzelnen Schritten eines Testlaufs finden Sie unter Übersicht über die Testbereitstellung.

Wenn die Assembly erfolgreich erneut signiert wurde, wird der Testlauf wahrscheinlich beendet, und die richtigen Ergebnisse werden erzeugt. Wenn das Signieren fehlschlägt, wird eine Fehlermeldung wie die folgende angezeigt:

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.

Gehen Sie folgendermaßen vor, um diesen Fehler zu beheben:

  • Erneutes Signieren der Assembly. Wenn die Schlüsseldatei vorliegt, mit der die Assembly signiert wurde, kann Visual Studio die Assembly automatisch erneut signieren.

  • Deaktivieren der Signaturüberprüfung. Sie können die Signaturüberprüfung auf dem Computer, auf dem die Assembly getestet wird, deaktivieren. Dies gilt nur für Assemblys, die von Ihnen angegebenen werden.

Erneutes Signieren der Assembly

Auf der Codeabdeckungsseite des Testlaufkonfigurations-Editors können Sie eine Schlüsseldatei angeben, die nach der Instrumentation für das erneute Signieren von Binärdateien verwendet wird. Wenn Sie mehrere signierte Assemblys testen, versucht Visual Studio, alle mit einem starken Namen signierten Assemblys mit der abgegebenen Schlüsseldatei erneut signieren.

Im Testlaufkonfigurations-Editor können Sie eine Schlüsseldatei angeben, mit der Visual Studio die Assemblys mit starkem Namen erneut signiert. Weitere Informationen finden Sie auf der Seite Gewusst wie: Erfassen von Codeabdeckungsdaten unter "Erneutes Signieren von Assemblys". Wenn Sie eine Schlüsseldatei angeben, wird dem Testlauf ein Schritt zum Signieren hinzugefügt. Visual Studio erkennt automatisch, welche Assemblys mithilfe der angegebenen Schlüsseldatei erneut signiert werden müssen. Alle Assemblys, die mithilfe dieser Schlüsseldatei erneut signiert werden können, werden signiert.

Hinweis:

Assemblys können nur mithilfe einer Schlüsseldatei erneut signiert werden, nicht mit einem Schlüsselnamen.

In folgenden Fällen erfolgt das erneute Signieren von Assemblys nur unvollständig oder überhaupt nicht:

  • Wenn die Schlüsseldatei nicht verfügbar ist, kann Visual Studio die Assembly nicht erneut signieren. Versuchen Sie, die Schlüsseldatei neu zu generieren, und versuchen Sie dann erneut, die Assembly zu signieren.

  • Wenn die Schlüsseldatei durch ein Kennwort geschützt ist, kann die Assembly nicht erneut signiert werden.

  • Pro Testlauf wird nur eine Schlüsseldatei unterstützt. Beachten Sie folgende Aspekte bei einem Testlauf, der auf mehrere Assemblys verweist. Einige dieser Assemblys wurden mit einer bestimmten Schlüsseldatei signiert, während andere Assemblys mit einer anderen Schlüsseldatei signiert wurden. Da Sie nur eine Schlüsseldatei auswählen können, werden die Assemblys, die mit der anderen Schlüsseldatei signiert wurden, nicht erneut signiert. Sie müssen manuell signiert werden. Wenn einige Assemblys nicht signiert werden, wird beim Testlauf ein Fehler angezeigt. In diesem Fall können Sie die Signaturüberprüfung deaktivieren, wie unter Deaktivieren der Signaturüberprüfung beschrieben.

Deaktivieren der Signaturüberprüfung

Wenn das erneute Signieren fehlschlägt, weil beispielsweise die richtige Schlüsseldatei nicht zur Verfügung steht, können Sie für diese Assembly für die Dauer des Testlaufs die Signaturüberprüfung deaktivieren. Verwenden Sie hierfür das Strong Name-Tool (Sn.exe) mit der Option –Vr, wie hier dargestellt:

SN -Vr <Assemblyname>

Dadurch wird die Überprüfung mit starkem Namen auf dem Computer, auf dem der Befehl ausgeführt wird, nur für die angegebene Assembly deaktiviert.

Hinweis:

Wenn Sie Tests remote ausführen und die Signaturüberprüfung deaktivieren möchten, muss der Befehl SN.exe in den Setup- und Bereinigungsskripts enthalten sein, die auf dem Remotecomputer ausgeführt werden.

Sie können den Befehl nur verwenden, wenn Sie über ausreichende Berechtigungen verfügen.

Wenn der Testlauf abgeschlossen ist, aktivieren Sie Signaturüberprüfung erneut. Verwenden Sie hierfür den Befehl SN.exe mit der Option –Vu, wie hier dargestellt:

SN -Vu <Assemblyname>

Es wird empfohlen, die Signaturüberprüfung mithilfe der Befehle SN.exe in den Skripts zu deaktivieren und dann wieder zu aktivieren. Sie können die Überprüfung beispielsweise in einem Setupskript deaktivieren und in einem Bereinigungsskript wieder aktivieren.

Hinweis:

Es ist wichtig, die Signaturüberprüfung erneut zu aktivieren. Wenn die Signaturüberprüfung deaktiviert bleibt, können Sicherheitsprobleme auftreten.

Wenn Sie die SN-Befehle in eigene Skriptdateien eingefügt haben, geben Sie die Skriptdateien auf der Setup- und Bereinigungsskriptseite des Testlaufkonfigurations-Editors an. Weitere Informationen finden Sie unter Gewusst wie: Angeben einer Testlaufkonfiguration. Informationen zur Reihenfolge, in welcher diese und andere Schritte in einem Testlauf auftreten, finden Sie unter Übersicht über die Testbereitstellung.

Siehe auch

Aufgaben

Gewusst wie: Angeben einer Testlaufkonfiguration

Gewusst wie: Erfassen von Codeabdeckungsdaten

Gewusst wie: Signieren einer Assembly mit einem starken Namen

Konzepte

Übersicht über die Testbereitstellung

Assemblys mit starkem Namen

Referenz

Strong Name-Tool (Sn.exe)