SGEN: ошибка: не удалось загрузить файл или сборку (исключение из HRESULT: 0x8013141A)

VS 2010, win server 2003, .Net 3.5 решение, которые были мигурированы из .Net 1.1

все проекты в решении подписаны с задержкой. Soluton можно построить успешно для отладки, но всегда не удалось для выпуска со следующей ошибкой. SGEN: ошибка: не удалось загрузить файл или сборку 'AssemblingX, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=xxxxxxxx' или одна из его зависимостей. Ошибка проверки строгих имен. (Исключение из HRESULT: 0x8013141A)

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

Я создал sgen.исполняемый.config для включения "loadFromRemoteSources", следуя инструкциям http://social.msdn.microsoft.com/Forums/nl-NL/msbuild/thread/695581ae-77e7-4c3a-bb3f-6472b8c47f65

но ничего не изменилось. Есть идеи?

спасибо

5 ответов


эта проблема связана с проверкой строгих имен. Открой свой AssemblyX на Ildasm.exe(файлов C:\Program (для x86)\Microsoft пакет SDK папке\Windows\В7.\0А бин). Внимание его PublicKeyToken допустим pkt123 для примера. Теперь откройте командную строку VS в режиме администратора и запустите sn.команда ехе. Например:

sn -Vr *,pkt123

Создайте свое решение снова, и все должно быть в порядке.

но если нет, и вы получите ту же ошибку сейчас, то вам нужно запустите другую версию sn.исполняемый. Чтобы найти это, перейдите в командную строку Visual Studio.

c:\Program Files(x86)>dir /s sn.exe

это может занять 5-10 секунд и должно дать список sn.файл EXE. Перейдите к пути и выполните sn.exe, требуется или принадлежит вам, как показано выше. Если не уверен, кого казнить, казнить всех ЗП.исполняемый. Что должно решить вашу проблему. Если нет, дайте мне знать, и позвольте мне снова переносить рнд.


Так как я не могу прокомментировать единственный ответ на это, я хотел убедиться, что другие пользователи, которые пришли на этот ответ, поскольку я не сделал тех же ошибок, которые могут быть у других. Согласно документации MSDN для утилиты строгого именования, использование переключателя Vr(пропуск подписи) может привести к загрузке вредоносных сборок и должно использоваться только в разработке, а не в развертывании.

http://msdn.microsoft.com/en-us/library/k5b5tt23 (v=против 80).aspx


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


открыть cmd.

Cd  "C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin"   

выполнить:

sn –Vr **AssemblingX** name (without dll extension), **PublicKeyToken**

(код)

перестроить решение. И она должна быть решена.


если все еще не решено, вы должны удалить или установить AllowStrongNameBypass (DWORD) до "1" в ключе

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework

на 64-разрядных компьютерах

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework

и

HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\.NETFramework