Я использую signtool для подписи своих сборок C#. Все работало нормально до Windows 10 1803 Update. Теперь, как только перезагрузите компьютер или даже после приостановки компьютера, я получаю сообщение об ошибке: не было найдено ни одного сертификата, отвечающего всем заданным критериям.
Если я снова импортирую сертификат, все будет работать нормально до следующего перезапуска ...
Я попытался импортировать сертификат в разные папки хранилища сертификатов Windows, я импортировал его для текущего пользователя или для компьютера, я удалил его во всех папках перед повторным импортом ... но проблема всегда одна и та же.
Любые подсказки были бы замечательными!
@pvenky - просто идея - если вы строите параллельно, это может вызвать проблему. Я переключил все свои сборки TFS, чтобы не строить параллельные, и это решило все мои проблемы случайной сборки.
Я не занимаюсь параллельным строительством и до сих пор вижу спорадические сбои. Он всегда терпит неудачу с таким сообщением: EXEC : error information: "Error: SignerSign() failed." (-1073700864/0xc000a000)
, но каждый раз терпит неудачу в другом проекте.
Вот подсказка. Запустите signtool
с опцией /debug
. Когда я вручную запускаю его из командной строки, я получаю ту же ошибку (сертификаты не найдены), если я не запускаю командную строку как администратор. С опцией /debug
вы увидите все сертификаты, которым она соответствует, и то, как она фильтрует, чтобы выбрать сертификат для подписи. Мой сертификат удаляется на последнем этапе (фильтр закрытого ключа). Если это так, попробуйте запустить с повышенными разрешениями и посмотрите, работает ли это.
В моем случае по какой-то причине служба Windows агента сборки VSTS, которая запускает сборки, не запускалась после обновления 1803, и я запускал агент вручную. Вот почему я получал эту ошибку. Как только я понял, что служба не работает, и запустил ее как службу, ошибка исчезла.
На самом деле я вернулся к своему Вопросу, потому что проблема внезапно исчезла за выходные. Даже без установки обновлений. Но я буду иметь в виду эту опцию / отладку!
Мне пришлось использовать диспетчер сертификатов MMC, чтобы предоставить учетной записи компьютера права сервера сборки для закрытого ключа сертификатов.
У меня возникла аналогичная проблема на моем сервере сборки после обновления 1803 года. Началось так же, как у вас, с ошибкой «Сертификаты не найдены ...». Когда я начал расследование, проблема внезапно исчезла (я не делал ничего, что могло бы ее исправить). Но теперь signtool периодически дает сбой. Одна из наших сборок содержит около 30+ dll, каждая из которых подписана, и signtool завершается с ошибкой "произошла внутренняя ошибка" на случайном компоненте. Все еще ищу решение.