Не удалось выполнить проверку сильного имени
Две машины. Как с .NET 3.5, так и с распространенными распространяемыми VС++ SP1 версиями VS 2008
Один exe, который использует две подписанные библиотеки DLL, один в С++/CLI и один в С#
EXE загружается и работает нормально на одной машине.
С другой стороны, я получаю "Сильное подтверждение имени" в исполняемом файле С++ (HRESULT 0x8013141A)
Любые идеи?
Ответы
Ответ 1
Откройте командную строку как администратор и введите следующие команды:
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
Ответ 2
Откройте командную строку как администратор и введите следующую команду:
"C:\Program Files\Microsoft SDK\Windows\v6.0A\Bin\x64\sn.exe" -Vr <dllpath>
Обратите внимание, что аргумент чувствителен к регистру.
Источник с более подробной информацией: http://blogs.msdn.com/b/keithmg/archive/2012/03/20/strong-name-validation-failed-exception-from-hresult-0x8013141a.aspx
Ответ 3
Вы должны использовать 64-разрядную версию sn.exe на 64-разрядной машине. (C:\Program Files\Microsoft SDK\Windows\v6.0A\Bin\x64\sn.exe)
Ответ 4
Это код, который запускается на машине разработки, где вы могли бы запустить "sn.exe -Vr AssemblyName.dll" на каком-то этапе, что позволит вам использовать подписанную задержкой сборку, как если бы она была полностью подписана. Когда вы переносите задержанную подписку на другую машину и запускаете ее, она не будет проверять достоверность имени, потому что она не полностью подписана.
Ответ 5
В моем случае у меня была такая же проблема с Visual Studio 2015
, и я уже подписал сборку.
Я исправил его следующим образом: Щелкните правой кнопкой мыши на проекте, который вызывает проблему → "Свойства" → "Создать" → Измените значение поля "Платформа-цель".
Мне пришлось изменить его с Any CPU
на x86
, но я думаю, что в функции проекта и библиотеки, которая терпит неудачу, вы должны изменить ее значение на x64
.
Ответ 6
SN.EXE отсутствует в новых версиях Visual Studio. В Visual Studio 2012,
мы должны использовать "Командная строка разработчика для Visual Studio 2012". Затем запустите команду "sn".
Синтаксис: sn -Vr *, 2d58152b8e842be2
где "2d58152b8e842be2" - это токен открытого ключа, указанный в сообщении об ошибке. Почему-то это не решило мою проблему.
Ответ 7
Возможно, вы сможете обойти это при разработке, перейдя в настройки проекта → Подписать → и снимите флажок "Подписать сборку".
Я столкнулся с этим сегодня во время отладки с копией исходного кода Entity Framework.
Ответ 8
Я столкнулся с этим сегодня и наткнулся на 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.testsettings VS 2010., то он будет нуждаться в редактировании, как указано выше.
Ответ 9
Щелкните правой кнопкой мыши Project → Свойства → Вставить вкладку → Платформа Target → Выберите "x64"
Ответ 10
Я работаю с VS.Net Ultimate 2012
и это решение помогло мне:
Щелкните правой кнопкой мыши на Project- > properties- > Build Tab- > switch. Создайте сериализацию в off- > done
Ответ 11
Я исправил это, перейдя в меню "Сборка" (верхняя панель) и скажу "Перестроить xxxProject.plugin" только для этого конкретного проекта, в отличие от построения всего решения.
Ответ 12
Если кто-то не может найти 64-битную версию sn.exe
, проверьте здесь:
C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.7.2 Tools\x64\sn.exe