アセンブリのインストルメント化と再署名
更新 : 2007 年 11 月
アセンブリに含まれているコードのテスト中にコード カバレッジ情報を収集する必要がある場合、該当するアセンブリをあらかじめインストルメント化しておく必要があります。インストルメンテーション処理により、コード カバレッジ情報を生成するコードがアセンブリに追加されます。コード カバレッジ用アセンブリのインストルメント化の詳細については、「方法 : コード カバレッジ データを取得する」を参照してください。
ただし、テストしているアセンブリが厳密な名前で署名されている場合、インストルメンテーションによるコードの変更によって署名が無効になります。このため、Visual Studio は、インストルメンテーション処理の直後にアセンブリを自動的に再署名しようとします。
![]() |
---|
テストの実行における手順の詳細については、「テスト配置の概要」を参照してください。 |
再署名が正常に行われると、テストの実行は完了し、結果が正常に生成されます。署名に失敗した場合は、次のようなエラーが生成されます。
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.
この問題を解消するには、次の処理を行います。
アセンブリに再署名します。アセンブリの署名に使用されたキー ファイルがある場合は、それを指定すると、Visual Studio がアセンブリを自動的に再署名します。
署名の検証を無効化します。アセンブリをテストしているコンピュータで署名の検証を無効にできます。この操作は、指定したアセンブリに対してのみ適用されます。
アセンブリの再署名
テストの実行構成エディタの [コード カバレッジ] ページで、インストルメンテーション後のバイナリの再署名に使用するキー ファイルを指定できます。署名済みの複数のアセンブリをテストする場合、Visual Studio は、指定したキー ファイルを使用して署名された厳密な名前のアセンブリをすべて再署名しようとします。
テストの実行構成エディタで、厳密な名前のアセンブリの再署名に Visual Studio が使用するキー ファイルを指定できます。詳細については、「方法 : コード カバレッジ データを取得する」の「アセンブリの再署名」を参照してください。キー ファイルを指定すると、テストの実行プロセスに再署名の手順が追加されます。Visual Studio は、指定されたキー ファイルを使用して、再署名が必要なアセンブリを自動的に特定します。そのキー ファイルを使用して再署名できる、すべてのアセンブリが再署名されます。
![]() |
---|
アセンブリの再署名に使用できるのは、キー ファイルだけです。キー名は使用できません。 |
次の場合、アセンブリの再署名は不完全になるか、行われません。
キー ファイルがない場合、Visual Studio はアセンブリを再署名できません。キー ファイルを再生成して、アセンブリの再署名をやり直すことができます。
キー ファイルがパスワード保護されていると、再署名は失敗します。
サポートされるキー ファイルは、テストの実行につき 1 つだけです。たとえば、複数のアセンブリを参照するテストの実行があるとします。一部のアセンブリはあるキー ファイルを使用して署名されており、別のアセンブリは別のキー ファイルを使用して署名されています。選択できるキー ファイルは 1 つだけなので、それ以外のキー ファイルを必要とするアセンブリは再署名されず、手動で再署名する必要が生じます。署名されないままのアセンブリがあると、テストの実行レベルでエラーが生成されます。その場合、署名の検証を無効にすることを選択できます。詳細については、「署名の検証の無効化」を参照してください。
署名の検証の無効化
適切なキー ファイルがない場合など、再署名が失敗する場合は、テストの実行中に、そのアセンブリについて署名の検証を無効にすることを選択できます。これを行うには、厳密名ツール (Sn.exe) で –Vr オプションを指定します。次に例を示します。
SN -Vr <アセンブリ名>
これにより、コマンドを実行したコンピュータで、指定したアセンブリについてのみ、厳密な名前の検証が無効になります。
![]() |
---|
リモートで実行しているテストの署名の検証を無効にするには、リモート コンピュータで実行する SN.exe コマンドをセットアップおよび後処理用スクリプトに含める必要があります。 |
これを行うには、適切なアクセス許可が必要です。
テストの実行が完了したら、署名の検証を再び有効にします。これを行うには、SN.exe コマンドで –Vu オプションを指定します。次に例を示します。
SN -Vu <アセンブリ名>
署名の検証の無効化と再有効化を行う場合は、スクリプトで SN.exe コマンドを使用することをお勧めします。セットアップ スクリプトで検証を無効にし、後処理用スクリプトで再び有効にできます。
![]() |
---|
署名の検証を再び有効にすることが重要です。署名の検証を無効のままにすると、セキュリティの問題が発生する可能性があります。 |
SN コマンドを別のスクリプト ファイルに配置したら、テストの実行構成エディタの [セットアップおよび後処理用のスクリプト] ページでスクリプト ファイルを指定します。詳細については、「方法 : テスト実行構成を指定する」を参照してください。テストの実行における上記およびその他の手順の処理の詳細については、「テスト配置の概要」を参照してください。