アセンブリのインストルメント化と再署名
アセンブリ内のコードのテスト時にコード カバレッジ データを収集する場合は、最初に、Visual Studio がそのアセンブリをインストルメント化する必要があります。 インストルメンテーション処理により、コード カバレッジ データを生成するアセンブリにコードが追加されます。
ただし、テストしているアセンブリが厳密な名前で署名されている場合、インストルメンテーションによるコードの変更によって署名が無効になります。 このため、Visual Studio は、インストルメンテーション処理の直後にアセンブリを自動的に再署名しようとします。
再署名が正常に行われると、テストの実行は完了し、結果が正常に生成されます。 署名に失敗した場合は、次のようなエラーが生成されます。
Strong name verification failed for the instrumented assembly 'SignedLibrary, Version=1.0.0.0, Culture=neutral, PublicKeyToken=1696e096eba75082'. Please make sure that the correct key file for re-signing after instrumentation is specified in the test settings.
この問題を解消するには、次の処理を行います。
アセンブリに再署名します。 アセンブリの署名に使用されたキー ファイルがある場合は、それを指定すると、Visual Studio がアセンブリに自動的に再署名します。
署名の検証を無効化します。 アセンブリをテストしているコンピューターで署名の検証を無効にできます。 この操作は、指定したアセンブリに対してのみ適用されます。
アセンブリの再署名
コード カバレッジの診断データ アダプターに対するテストの設定では、インストルメンテーション後にバイナリを再署名するためのキー ファイルを指定できます。 署名済みの複数のアセンブリをテストする場合、Visual Studio は、指定したキー ファイルを使用して署名された厳密な名前のアセンブリをすべて再署名しようとします。
キー ファイルを指定すると、テストの実行プロセスに再署名の手順が追加されます。 Visual Studio は、指定されたキー ファイルを使用して、再署名が必要なアセンブリを自動的に特定します。 そのキー ファイルを使用して再署名できる、すべてのアセンブリが再署名されます。
注意
アセンブリの再署名に使用できるのは、キー ファイルだけです。キー名は使用できません。
次の場合、アセンブリの再署名は不完全になるか、行われません。
キー ファイルがない場合、Visual Studio はアセンブリに再署名できません。 キー ファイルを再生成して、アセンブリの再署名をやり直すことができます。
キー ファイルがパスワード保護されていると、再署名は失敗します。
サポートされるキー ファイルは、テストの実行につき 1 つだけです。 たとえば、複数のアセンブリを参照するテストの実行があるとします。 一部のアセンブリはあるキー ファイルを使用して署名されており、別のアセンブリは別のキー ファイルを使用して署名されています。 選択できるキー ファイルは 1 つだけなので、それ以外のキー ファイルを必要とするアセンブリは再署名されず、手動で再署名する必要があります。署名されないままのアセンブリがあると、テストの実行レベルでエラーが生成されます。 そのような場合は、署名の検証を無効にできます。詳細については、「署名の検証の無効化」を参照してください。
署名の検証の無効化
再署名が失敗する場合は、テストの実行の間、そのアセンブリについて署名の検証を無効にすることを選択できます。 たとえば、適切なキー ファイルがない場合、再署名が失敗します。 署名の検証を無効にするには、Sn.exe (厳密名ツール) で –Vr オプションを指定します。次に例を示します。
SN -Vr <アセンブリ名>
これにより、コマンドを実行したコンピューターで、指定したアセンブリについてのみ、厳密な名前の検証が無効になります。
これを行うには、適切なアクセス許可が必要です。
テストの実行が完了したら、署名の検証を再び有効にします。 これを行うには、SN.exe コマンドで –Vu オプションを指定します。次に例を示します。
SN -Vu <アセンブリ名>
注意
署名の検証を再び有効にすることが重要です。 署名の検証を無効のままにすると、セキュリティの問題が発生する可能性があります。
参照
処理手順
方法: 自動テストのテスト設定を使用してコード カバレッジを構成する