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