Не удалось загрузить файл или сборку Antlr3.Runtime (1) или одну из его зависимостей


83

Я получаю эту ошибку при попытке запустить свой MVC4проект, он работал нормально до последнего раза на других моих машинах, но когда я пытаюсь запустить его с другого компьютера, он дает мне эту ошибку:

Не удалось загрузить файл или сборку Antlr3.Runtime (1) или одну из его зависимостей. Определение манифеста обнаруженной сборки не соответствует ссылке на сборку. (Исключение из HRESULT: 0x80131040)

Прочитав об этом здесь, я попытался сделать :

Установочный пакет Antlr3.Runtime -Pre

но это не помогло, есть идеи?


1
Вы пытались установить пред. версия перед установкой вышеуказанной версии?
Spock

1
Я не обновлял ни одной версии. Только что поменял машину
Maven

Вы пытались щелкнуть правой кнопкой мыши решение, а затем «Включить восстановление пакета nuget»?
TS

Ни один из ответов здесь не помог, но ответ на этот дубликат помог .
DCShannon

Ответы:


103

Я столкнулся с той же проблемой, когда экспериментировал с бесплатной платформой регистрации Nlog.

Мне это помогло:

Введите% TEMP% в проводнике и удалите все временные файлы.

После этого я не получал ошибки при запуске моего проекта MVC5 в Visual Studio.


В моем сообщении об ошибке не было "(1)", но это решение все еще работало
Роберто

10
Спасибо за это. Это дерьмо Microsoft, из-за которого иногда хочется проткнуть Visual Studio кулаком ...
Смирниан,

Потрясающе!! Потратил на это слишком много часов. Моя проблема заключалась не в сборке, а в публикации артефактов с использованием файлов pubxml на сервере Jenkins происходил сбой, тогда как на моем локальном компьютере он работал нормально. После удаления временной папки, как описано выше, артефакты публикации работали без проблем.
yyardim

41

Попробуйте удалить временные файлы для ASP.Net, выполнив одно из следующих действий:

  • Введите% TEMP% в проводнике и удалите все временные файлы.
  • Перейдите в папку «C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ Temporary ASP.NET Files» и удалите все файлы.

7
Спасибо. Мне помог вариант 2
Раввин

Я согласен с @Rabbi. Это вариант 2, который решил мою проблему. Хотел бы я проголосовать за ваш ответ 10 раз! Большое тебе спасибо. :)
Annie Lagang

31

Не забудьте также очистить временные файлы ASP.NET в Framework64. Это помогло мне.

  • C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files
  • C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files

Прекрасное спасибо, безрезультатно попробовал принятый ответ, пока не увидел этот пост, Framework64 сделал это за меня
Джошуа Охана

Это работает для моей и другой упомянутой проектной DLL. В моем случае все ссылки в веб-проекте были нарушены, сообщение было: «Не удалось загрузить файл или сборку« Any.dll »или одну из ее зависимостей». После очистки ссылка на dll могла быть создана, и все работает нормально.
Fer R

27

На всякий случай это кому-то поможет.
У меня была эта проблема с приложением MVC 5. Удаление Antlr3.Runtime.dll из каталога bin и повторная сборка устранили проблему.


Это сработало для меня. Благодарю. Но я до сих пор не уверен в истинной причине этой ошибки. Может кто-нибудь объяснить.
mukulsharma1146

1
В моем случае вместо этого мне пришлось удалить WebGrease.dll
Тарвен

спасибо ... потратил 3 часа, пытаясь решить эту проблему, и это шаг, который избавил меня от моего YSOD.
Джошуа К.

18

Моя проблема заключалась в том, что последняя версия WebGrease устанавливает версию 3.4.1.9004 Antlr. Как только я установил WebGrease, а затем обновил Antlr до версии 3.5.0.2, ошибка исчезла.


11
Моя проблема была именно в этой проблеме. Мне пришлось раскрутить цепочку зависимостей в консоли диспетчера пакетов, удалив Microsoft.AspNet.Web.Optimization, WebGrease и Antlr (в указанном порядке), затем установив пакет Microsoft.AspNet.Web.Optimization, обновив пакет WebGrease и, наконец, обновив -package Antlr (в указанном порядке), чтобы получить последние версии и исправить проблему с версией Antlr.
Уэйд

13

Для меня удаление этого узла в файле web.config избавило от сообщения об ошибке:

<identity impersonate="true" userName="" password="">

Но что действительно сработало для меня, так это предоставление полного доступа (к userName, указанному в impersonate) к папке Temporary ASP.NET Files, находящейся в C: \ Windows \ Microsoft.NET \ Framework {version} (или Framework64).

Удостоверение также может храниться в параметрах пула приложений веб-сайта в IIS.

Убедитесь, что ваш пакет nuget установлен правильно с правильной версией. Если ничего не работает, просто попробуйте повторно добавить ссылку из локальной папки и установить для нее значение «Копировать локально».


1
Это решило проблему для меня. В web.config была настройка для олицетворения в промежуточной среде, и эта учетная запись пользователя не существовала в моем мире разработчиков.
ttomsen

Я попробовал все три предложения, и ни одно из них не сработало. Все еще получаю YPOD 1. В моем web.config 2 нет тега <identity. Я дал «полный контроль» как iis_usrs, так и пользователям \ johnny 3. Последние параметры кажутся хакерскими
dannyrosalex

Я решил это с помощью команды:ASPNET_REGIIS -GA impersonatedusername
cslecours 06

Это помогло решить мою проблему. Я работал локально, и поскольку имя учетной записи, упомянутое в этом элементе, не имеет доступа к моей папке dev.
Aamol

Спасибо, это решение действительно полезно.
Josue Barrios

11

Если какие-либо решения решают вашу проблему, проверьте файл web.config, версию сборки

<dependentAssembly>
        <assemblyIdentity name="Antlr3.Runtime" publicKeyToken="eb42632606e9261f" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-3.5.0.2" newVersion="3.5.0.2" />
      </dependentAssembly>

Спасибо.В случае обновления пакетов и столкновения с проблемой этот ответ сработал для меня.
Fereydoon Barikzehy

Я удалил эту сборку, тогда она у меня заработала. Спасибо!!
User6667769

8

Один из простых способов - обновить antlr и webgrease.

  1. Перейти к диспетчеру консоли пакетов
  2. затем попробуйте применить эти коды один за другим
  3. PM> Обновление-пакет Antlr
  4. PM> Пакет обновлений WebGrease

Наконец ошибка решена


2

Для меня это было вызвано несоответствием между отладочной и исполняемой версиями Antlr.

Наконец решил это, установив другой пакет Antlr: Install-Package Antlr



2

Была проблема с impersonate = "true" в web.config, я удалил строку, которая работала !!

Я снова разместил строку и дал разрешение администратора пользователю учетной записи с олицетворением, все мое приложение работало :)


1

Если вы используете выдачу себя за другое лицо. Ответ - предоставить пользователю, которому вы выдаете себя, разрешение на доступ к следующим папкам:

  1. C:\Windows\Microsoft.NET\Framework[v4.0.30319 or the version that you're using]\Temporary ASP.NET Files

  2. Каталог вашего сайта.

также вам может потребоваться создать следующую папку:

C:\Windows\Microsoft.NET\Framework\[v4.0.30319 or the version that you're using]\Temporary ASP.NET Files\[Application-Name-Goes-Here]

Но сначала попробуйте предыдущее, у меня это сработало.

Эти два изменения для предоставления олицетворенному пользователю разрешения на сохранение временных данных и извлечение файлов dll и любых необходимых файлов из каталогов.

Обновление, для Windows 10 Это решение, которое сработало для меня

Мы сделаем оба шага, но вместо C:\Windows\Microsoft.NET\Framework[v4.0.30319 or the version that you're using]\Temporary ASP.NET Files

Запишите% TEMP% в проводник и дайте пользователю, которому вы олицетворяете, разрешение на доступ к следующей папке: C:\Users\[UserName]\AppData\Local\Temp\Temporary ASP.NET Files


1

У меня есть простое решение. Перейдите в папку своего собственного проекта и найдите папку пакетов.

введите описание изображения здесь


0

В проекте у меня была ссылка на WebGrease, но не было соответствующего элемента в packages.config. Я удаляю ссылку из проекта, потому что она мне больше не нужна. Теперь это работает.


0

Я попробовал все ответы в этом посте, но ни один из них не помог мне.

Итак, я удалил все каталоги / bin внутри всех проектов из своего решения, очистил и перестроил решение, и, наконец, оно сработало!

Все утро я потратил на поиски проблемы ...


0

что сработало для меня, так это удаление identity = true из моего webconfig (в свойствах system.web) и повторное создание решения и его повторная публикация (при необходимости), и это сработало как шарм!


это должно быть в комментарии
Usman Maqbool

0

Моя проблема в конечном итоге была вызвана изменением подключенных дисков в нашей групповой политике. В моем решении параметр tempDirectory установлен в Web.config, чтобы использовать настройку RAM-диска в качестве диска Z :. Очевидно, они начали использовать диск Z :, и библиотеки DLL копировались в tempDirectory, как обычно, но потом я думаю, что они удалялись процессом на удаленном сервере (возможно, сканирование на вирусы). Я смог понять это только с помощью Process Monitor и фильтрации для Antlr и увидев, что он ищет библиотеки DLL в сетевой папке.


0

Я обновил все пакеты в диспетчере пакетов Nudget, и это сработало! В моем случае я размещаю свой сайт в GoDaddy


0

После безуспешной попытки удалить временный файл .netframework я изменил

<system.web>
    <authentication mode="None" />
    <compilation debug="true" targetFramework="4.6.1" />
    <httpRuntime />
    <pages controlRenderingCompatibilityVersion="4.0" />
</system.web> 

Только с targetFramework = "4.6" вместо 4.6.1 веб-сайт отображается без ошибок. Затем я снова перешел на targetFramework = "4.6.1" и перезапустил сервер. Все остается ОК.



0

Решением для меня было перейти в Инструменты> Диспетчер пакетов NuGet> Управление пакетами для решения.

Затем щелкните Antlr3 и убедитесь, что он установлен в:

  1. Стартап-проект
  2. Любые библиотеки, использующие отражение
  3. Любые библиотеки, вызывающие библиотеки, использующие отражение

В моем случае это было необходимо для 4 проектов. Как только это было сделано, проблема была окончательно решена.


0

Я только что столкнулся с этой проблемой и попробовал вышеупомянутые решения, но пока ничего не работало, мне пришлось удалить его dll из bin floder и перестроить, а затем удалить все выпущенные файлы из папки пакетов и восстановить пакеты с помощью консоли диспетчера пакетов



0

В моем случае, когда я клонировал проект, Visual Studio 2019 заменила пробел на «% 20» в пути к проекту. Затем, когда VS попытался найти пакеты-слепки, он не смог найти правильный путь.


0

Я столкнулся с этой проблемой после обновления Microsoft.AspNet.Web.Optimization

update-package WebGreaseи update-package Antlr(в этом порядке), чтобы получить последние версии и исправить проблему с версией Antlr.


0

Для меня я сделал эти шаги, и у меня это сработало:

1) Я удалил binи objпапку (некоторые файлы не были удалены Cleanпроектом)

2) Я проверил некоторые файлы, такие как JS, которые были удалены давно, но они были включены в файлы проекта. . Поэтому я их исключаю.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.