Не удалось загрузить файл или сборку или один из его зависимостей
У меня есть еще одна из этих проблем "не удалось загрузить файл или сборку или одну из ее зависимостей".
дополнительная информация: не удалось загрузить файл или сборка 'Майкрософт.Практика.Единство, Версия=1.2.0.0, культуры=нейтральный, PublicKeyToken=31bf3856ad364e35 ' или одна из его зависимостей. В расположенном определение манифеста сборки не не соответствует ссылке на сборку. (Исключение из HRESULT: 0x80131040)
Я понятия не имею, что вызывает это или как я могу отладить его, чтобы найти причину.
Я сделал поиск в моих каталогах решений .файлы csproj, и каждый, где я есть единство я:
ссылка Include= " Microsoft.Практика.Единство, Версия=2.0.414.0, культура = нейтральная, Значения PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"
Не могу найти ссылку в любом месте, которая идет против 1.2.0.0 в любом из моих проектов.
любые идеи, как я стоит ли решать эту проблему?
Я также был бы признателен за советы о том, как отлаживать такие проблемы в целом.
30 ответов
Проверьте, ссылаетесь ли вы на сборку, которая, в свою очередь, ссылается на старую версию unity. Например, предположим, у вас есть сборка под названием
ServiceLocator.dll
который нуждается в старой версии Unity assembly, теперь, когда вы ссылаетесь наServiceLocator
вы должны предоставить ему старую версию Unity, и это создает проблему.может быть выходной папкой, где все проекты строят свои сборки, имеет старую версию единство.
можно использовать FusLogVw чтобы узнать, кто загружает старые сборки, просто определите путь для журнала и запустите свое решение, затем проверьте (в FusLogvw) первую строку, где загружается сборка Unity, дважды щелкните ее и посмотрите вызывающую сборку, и вот вы идете.
открыть Диспетчер IIS
Выбрать Пулы Приложений
затем выберите пул, который вы используете
перейдите в дополнительные настройки (справа)
измените флаг включить 32-разрядное приложение false на true.
для меня ни одно из других решений не работало (включая стратегию очистки/восстановления). Я нашел другое обходное решение, которое заключается в закройте и снова откройте Visual Studio.
Я думаю, это заставляет Visual Studio повторно загружать решение и все проекты, перепроверяя зависимости в процессе.
попробуйте очистить папки отладки и выпуска в вашем решении. Затем удалите и снова добавьте единства.
следующее сработало для меня.
- удалить временные файлы C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET файлы
- закройте VSTS и откройте снова
- удалить и добавить те же библиотеки DLL (Примечание: Вы добавляете те же соответствующие версии)
библиотека Microsoft Enterprise (ссылка .NetTiers) была нашей проблемой, которая, в свою очередь, ссылалась на более старую версию Unity. Для решения проблемы мы использовали следующее перенаправление привязки в интернете.config:
<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="Microsoft.Practices.Unity" publicKeyToken="31bf3856ad364e35" culture="neutral" />
<bindingRedirect oldVersion="1.0.0.0-2.0.414.0" newVersion="2.1.505.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Microsoft.Practices.Unity.Configuration" publicKeyToken="31bf3856ad364e35" culture="neutral" />
<bindingRedirect oldVersion="1.0.0.0-2.0.414.0" newVersion="2.1.505.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>
кроме того, вы можете просто обновить корпоративную библиотеку до последней версии.
на 99%не удалось загрузить файл или сборку или один из его зависимостей проблема вызвана зависимостей! Я предлагаю вам выполнить следующие шаги:
скачать Зависимость Walker от http://www.dependencywalker.com/
запуск Зависимость Walker и откройте dll (в моем случае
NativeInterfaces.dll
)-
вы можете увидеть одну или несколько dll с ошибкой в красном цвете ошибка при открытии файла...
это означает, что эта dll отсутствует в вашей системе; в моем случае имя dll
MSVCR71.DLL
вы можете скачать missings dll из google и скопировать в правильном направлении (в моем случае
c:\windows\system32
)-
на этом этапе необходимо зарегистрировать новую dll в GAC( глобальный кэш сборок): откройте терминал DOS и пиши:
cd \Windows\System32 regsvr32 /i msvcr71.dll
перезапустить приложение!
несмотря на первоначальный вопрос был опубликован 5 лет назад, проблема все еще сохраняется и довольно раздражает.
общее решение-это тщательный анализ всех ссылочных сборок, чтобы понять, что происходит неправильно. Чтобы облегчить эту задачу, я создал инструмент (расширение Visual Studio), который позволяет выбрать сборку .Net (.ddl или .exe-файл) и получить график всех ссылочных сборок с высокими конфликтующими или пропущенными ссылками.
инструмент доступен в галерее Visual Studio: https://marketplace.visualstudio.com/vsgallery/051172f3-4b30-4bbc-8da6-d55f70402734
Проверьте интернет.config / App.конфигурационный файл в вашем проекте. Проверьте правильность номеров версий.
<bindingRedirect oldVersion="X.X.X.X-X.X.X.X" newVersion="X.X.X.X" />
это сработало для меня.
У меня была аналогичная проблема. ** Juntos ответ правильный * * но вы должны отметить один важный совет!
для unity 2.1.505.2 разные AssemblyVersion и AssemblyFileVersion указаны:
AssemblyFileVersion используется nuget, но CLR не заботится об этом! CLR будет использовать только AssemblyVersion!
поэтому перенаправления должны применяться к версия, указанная в AssemblyVersion: 2.1.505.0
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<assemblyIdentity name="Microsoft.Practices.Unity" publicKeyToken="31bf3856ad364e35" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-2.1.505.0" newVersion="2.1.505.0" />
</dependentAssembly>
</assemblyBinding>
Смотрите также: каковы различия между AssemblyVersion, AssemblyFileVersion и AssemblyInformationalVersion?
- Goto:решение ->пакета
- нажать на кнопку дополнительно Tab (найти ниже страницы)
- добавить dll к дополнительным сборкам (таким образом, мы можем добавить внешние библиотеки DLL в sharepoint).
Я также получил эту ужасную ошибку и нашел решение для этого...
- Правой Кнопкой Мыши на имени решения
- Нажмите Очистить Решение
- Перезапустите Visual Studio
- свойства проекта Goto > > Build
- изменить конфигурация to релиз
- Начать Отладку (F5)
1) , 2)
4) , 5)
надеюсь, это поможет вам также.
Не уверен, что это может помочь.
убедитесь, что имя сборки и пространство имен по умолчанию в свойствах в asemblies совпадают. Это решило мою проблему, которая дала ту же ошибку.
Спасибо Ридди М. Слежка сработала для меня.
удалить временные файлы C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET файлы Закройте VSTS и снова откройте Удалите и добавьте те же библиотеки DLL (Примечание: Вы добавляете те же соответствующие версии)
в моем случае в папке bin была не ссылочная dll под названием Unity.MVC3, я попытался найти любую ссылку на это в visual studio без успеха, поэтому мое решение было так просто, как удалить эту dll из папки bin.
вы говорите, что у вас много проектов в вашем решении ... ну, начни с одного в верхней части заказа на сборку. Получите это, чтобы построить, и как только вы это поймете, вы можете применить то же самое исправление к остальным.
честно говоря, вам, вероятно, просто нужно обновить свою ссылку. Похоже, вы либо обновили свою версию и не обновили ссылки, либо это относительная проблема пути, если вы держите свое решение в системе управления версиями. Просто проверьте свои предположения и повторно добавьте ссылка.
эта проблема произошла со мной, когда одна из моих зависимых библиотек компилировала DLL с "любым процессором", когда родительская библиотека ожидала компиляции "x64".
вы должны удалить свое имя приложения.dll-файл из выходной папки. Очистка отладочных и Выпускных папок. Перестроить и скопировать в выходную папку регенерированный dll-файл.
Я "Set as Startup Project" выгруженная / разархивированная библиотека / проект.
затем развернул его.
Он работал!
Я думаю, что он не мог найти .dll, потому что сначала его не было в сборке.
другая возможная причина: убедитесь, что вы случайно не дали обоим проектам одно и то же имя сборки в свойствах проекта.
следующее сработало для меня.
- удалить временные файлы C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET файлы
- затем щелкните правой кнопкой мыши на Temporary Asp.net файлы>свойства>безопасность и дайте полный контроль доступа к IIS и всем пользователям, запускающим мой проект
мое решение для .NET 4.0, используя Enterprise Library 5, было добавить ссылку на:
Microsoft.Практика.Единство.Перехват.dll файлы
следите за конфликтующими ссылками. Даже после очистки и перестроения конфликтующие ссылки все равно вызовут проблему. Моя проблема была между AForge и Accord. Я удалил обе ссылки и снова добавил ссылки, повторно выбрав конкретную ссылку (в частности, в моем случае, просто Accord).
в моем случае ни один из предложенных ответов не сработал.
вот что сработало для меня:
- удалить ссылку
- переименовать DLL
- импортировать ссылку Еще раз
второй шаг был важен, по-видимому, так как он не работал без него.
попробуйте проверить, имеет ли свойство" копировать в локальный " для ссылки значение true, а конкретная версия-true. Это актуально для приложений в Visual Studio.
у меня было это сегодня, и в моем случае проблема была очень странной:
<dependentAssembly>
<assemblyIdentity name="Microsoft.Owin.Host.SystemWeb" publicKeyToken="31bf3856ad364e35" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-3.1.0" newVersion="3.1.0.0" />
</dependentAssembly>0.
обратите внимание на случайные символы в конце XML-каким-то образом они были перемещены из номера версии в конец этого блока XML!
<dependentAssembly>
<assemblyIdentity name="Microsoft.Owin.Host.SystemWeb" publicKeyToken="31bf3856ad364e35" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-3.1.0.0" newVersion="3.1.0.0" />
</dependentAssembly>
изменить на выше и вуаля! Все снова сработало.
Если вы получаете это сообщение об ошибке, открыв приложение на вас windows xp это означает, что сначала вы установили это приложение из-за его не работает без net framework 4 и пакет обновления 3 . вы установили оба и снова вы получаете эту ошибку, поэтому вы должны переустановить это приложение снова, но сначала удалить из add и remove
Если это не работает, пожалуйста, не обижай меня . я тоже младший
хорошо, это может показаться очень глупым, но вот как я решил проблему после того, как попробовал все другие решения и провел ночь на этой глупой вещи.
Я получал ту же ошибку с некоторой DLL, отсутствующей в папке Bin. Я попытался удалить, восстановить все из Team Foundation Server, но не работал. Получил копию папки Bin из моего офиса-matelocal машины и заменил ее. Это тоже не сработало. Наконец, я вручную FTPed server, получил копию DLL, которая была появляться безвестно отсутствующим, а затем он начал показывать, что следующий файл в последовательности списка файлов отсутствует.
таким образом, я ftped-сервер получил всю папку Bin, вручную заменил каждый файл по одному. (Не Ctrl + All и заменить.. Я попытался: не получилось.) И каким-то образом это сработало...