Ошибка проверки строгого имени - PullRequest
26 голосов
/ 31 декабря 2008

Две машины. Как с .NET 3.5, так и с распространяемыми пакетами VS 2008 VC ++ SP1

Один исполняемый файл, который использует две подписанные библиотеки DLL, одну в C ++ / CLI и одну в C #

Exe загружается и отлично работает на одной машине.

С другой стороны, я получаю «Ошибка проверки строгого имени» на исполняемом файле C ++ (HRESULT 0x8013141A)

Есть идеи?

Ответы [ 11 ]

24 голосов
/ 07 декабря 2015

Откройте командную строку от имени администратора и введите следующие команды:

reg DELETE "HKLM\Software\Microsoft\StrongName\Verification" /f
reg ADD "HKLM\Software\Microsoft\StrongName\Verification\*,*" /f
reg DELETE "HKLM\Software\Wow6432Node\Microsoft\StrongName\Verification" /f
reg ADD "HKLM\Software\Wow6432Node\Microsoft\StrongName\Verification\*,*" /f
14 голосов
/ 12 сентября 2013

Откройте командную строку как администратор и введите следующую команду:

"C: \ Program Files \ Microsoft SDKs \ Windows \ v6.0A \ Bin \ x64 \ sn.exe" -Vr

Обратите внимание, что аргумент чувствителен к регистру. Источник с более подробной информацией: http://blogs.msdn.com/b/keithmg/archive/2012/03/20/strong-name-validation-failed-exception-from-hresult-0x8013141a.aspx

13 голосов
/ 20 октября 2011

Вы должны использовать 64-битную версию sn.exe на 64-битной машине. (C: \ Program Files \ Microsoft SDKs \ Windows \ v6.0A \ Bin \ x64 \ sn.exe)

7 голосов
/ 24 апреля 2009

Это тот код, который запускается на компьютере «разработчика», на котором вы могли запустить «sn.exe -Vr AssemblyName.dll» на каком-то этапе, который позволил бы вам использовать сборку с подписью с задержкой, как если бы она была полностью подписана. При переносе сборки с подписью с задержкой на другой компьютер и ее запуске произойдет сбой проверки строгого имени, поскольку она не полностью подписана.

4 голосов
/ 05 апреля 2016

В моем случае у меня была такая же проблема с Visual Studio 2015, и я уже подписал сборку.

Я исправил это следующим образом: Щелкните правой кнопкой мыши на проекте, который вызывает проблему -> «Свойства» -> «Сборка» -> Измените значение поля «Цель платформы».

Мне пришлось изменить его с Any CPU на x86, но я предполагаю, что в функции проекта и библиотеки, которая выходит из строя, вы должны изменить его значение на x64.

4 голосов
/ 14 января 2015

Файл SN.EXE отсутствует в новых версиях Visual Studio. В Visual studio 2012, мы должны использовать «Командная строка разработчика для Visual Studio 2012». Затем выполните команду «sn».

Синтаксис: sn -Vr *, 2d58152b8e842be2

где "2d58152b8e842be2" - токен открытого ключа, показанный в сообщении об ошибке. Каким-то образом это само по себе не решило мою проблему.

3 голосов
/ 15 ноября 2013

Вы можете обойти это при разработке, зайдя в настройки проекта -> Подписание -> и сняв флажок «Подписать сборку».

Я столкнулся с этим сегодня, отлаживая копию исходного кода Entity Framework.

2 голосов
/ 13 сентября 2017

Щелкните правой кнопкой мыши на Project & rarr; Свойства & rarr; Создать вкладку & rarr; Цель платформы & rarr; Выберите «x64»

2 голосов
/ 27 февраля 2014

Я столкнулся с этим сегодня и наткнулся на http://timgeerts.blogspot.co.uk/2009/08/strong-name-validation-failed.html,, что кажется решением.

Вариант 1) Отключить покрытие кода (в VS 2010 перейдите в Настройки теста - ›Данные и диагностика -› Снимите флажок «Включено» рядом с охватом кода).

Вариант 2) Добавьте файл ключа подписи в конфигурацию покрытия кода (в VS 2010 перейдите в Настройки теста - ›Данные и диагностика -› выберите Покрытие кода и нажмите «Настроить» вверху. Это соответствует значению « keyFile "для тега CodeCoverage в файле .testsettings.)

В VS 2012 покрытие кода включено по умолчанию. Его можно отключить с помощью файла .runsettings с соответствующим исключением. См. http://msdn.microsoft.com/en-us/library/jj159530.aspx для получения дополнительной информации и примера файла. Для варианта 2, хотя в файле .runsettings, кажется, нет явных настроек, правильная вещь, кажется, происходит автоматически в отношении подписи (YMMV). Однако, если вы ссылаетесь на файл VS 2010 .testsettings, его нужно будет редактировать, как указано выше.

0 голосов
/ 08 мая 2017

Я исправил это, зайдя в меню Build (верхняя панель) и произнес «Rebuild xxxProject.plugin» только для этого конкретного проекта, в отличие от построения всего решения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...