Поделиться через


Инструментирование и повторная подпись сборок

Если требуется собирать данные покрытия кода во время тестирования кода в сборке, среде 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 не сможет повторно подписать сборку, если файл ключа недоступен. Следует заново создать файл ключа и повторить попытку подписи сборки.

  • Повторная подпись закончится неудачей, если файла ключа защищен паролем.

  • При тестовом запуске поддерживается только один файл ключа. Рассмотрим пример тестового запуска, ссылающегося на несколько сборок. Некоторые из этих сборок были подписаны с помощью одного файла ключа, другие — с помощью другого. Поскольку можно выбрать только один файл ключа, сборки, подписанные с помощью другого файла ключа, не будут повторно подписаны и их следует подписать вручную. Если некоторые сборки останутся неподписанными, на уровне тестового запуска возникнет ошибка. В этом случае можно отключить проверку подписи, как описано в разделе Отключение проверки подписи.

Отключение проверки подписи

Если повторная подпись завершилась неудачей, можно отключить проверку подписи для сборки на время тестового запуска. Повторная подпись завершится неудачей, например, при отсутствии правильного файла ключа. Для отключения проверки подписи используйте Sn.exe (средство строгих имен) с параметром –Vr, как показано ниже.

SN -Vr <имя_сборки>

Проверка строго имени отключится для указанной сборки только для компьютера, на котором выполняется команда.

Для этого необходимо иметь соответствующие разрешения.

После завершения тестового запуска следует снова разрешить проверку подписи. Для этого используется команда SN.exe с параметром –Vu, как показано ниже.

SN -Vu <имя_сборки>

Примечание

Важно снова включать проверку подписи.Если проверка останется отключенной, это может вызвать проблемы в области безопасности.

См. также

Задачи

Практическое руководство. Настройка покрытия кода с помощью параметров тестирования для автоматических тестов

Практическое руководство. Получение данных о покрытии кода

Создание параметров тестирования для запуска автоматических тестов из Visual Studio

Создание параметров тестирования для автоматических тестов в составе плана тестирования

Практическое руководство. Подписание сборки строгим именем

Ссылки

Sn.exe (средство строгих имен)

Основные понятия

Сборки со строгими именами