Не удалось загрузить файл или сборку 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.