无法加载文件或程序集“Antlr3.Runtime(1)”或其某个依赖项

我试图运行我的MVC4项目时,得到这个错误,它工作正常,直到上次在我的其他机器上,但是当我试图从另一台机器运行它给我这个错误:

无法加载文件或程序集“Antlr3.Runtime(1)”或其某个依赖项。 定位的程序集清单定义与程序集引用不匹配。 (来自HRESULT的exception:0x80131040)

在阅读这里后,我试着做 :

安装包Antlr3.Runtime -Pre

但它没有帮助,有什么想法?

在使用免费的Nlog日志logging平台时,我遇到了同样的问题。

这帮助了我:

在文件资源pipe理器中input%TEMP%并删除所有的临时文件。

之后,我没有得到在Visual Studio中启动我的MVC5项目时的错误。

尝试通过执行以下任一操作来删除ASP.Net的临时文件:

  • 在文件资源pipe理器中input%TEMP%并删除所有的临时文件。
  • 转到文件夹“C:\ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ Temporary ASP.NET Files”并删除所有文件。

不要忘记清除Framework64的临时ASP.NET文件。 这对我来说是诀窍。

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

我的问题是最新版本的WebGrease安装Antlr的版本3.4.1.9004。 一旦我安装了WebGrease,然后更新Antlr到版本3.5.0.2,错误消失了。

以防万一这有助于某人。
我有一个MVC 5应用程序的这个问题。 从bin目录中删除Antlr3.Runtime.dll并重新构build修复的问题。

如果任何解决scheme解决您的问题validationweb.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> 

对我来说,删除web.config文件中的这个节点摆脱了错误消息:

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

但是真正对我有用的是授予对C:\ Windows \ Microsoft.NET \ Framework {version}(或Framework64)中的“Temporary ASP.NET Files”文件夹的完全访问权限(对impersonate中指定的userName)。

身份也可能存储在IIS中的“网站应用程序池设置”中。

确保你的Nuget包装正确安装,并有正确的版本。 如果没有其他的工作,那就试试从本地文件夹重新添加引用,并将其设置为复制本地。

其中一个简单的方法是更新antlr和webgrease

  1. 转到包控制台pipe理器
  2. 然后尝试逐一应用这些代码
  3. PM> Update-Package Antlr
  4. PM>更新包WebGrease

最后解决错误

对我来说,这是由Antlr的debugging和运行时版本之间的不匹配造成的。

最后通过安装一个不同的Antlr软件包来解决它:Install-Package Antlr

尝试解锁Antlr3.Runtime.dll,如果您手动添加引用: 在这里输入图像说明

在web.config中有impersonate =“true”的问题,我删除了它的工作线!

我再次放置线,并授予pipe理员权限帐户用户模拟,我的整个应用程序工作:)

在一个项目中我引用了WebGrease,但在packages.config中没有相应的元素。 我从项目中删除了参考,因为我不再需要它了。 它现在有效。

我在这篇文章中尝试了所有的答案,但没有一个为我工作。

所以我从我的解决scheme中删除了所有项目中的所有/ bin目录,清理并重build了解决scheme,终于奏效了!

我整个上午都在努力研究这个问题

什么工作是从我的webconfig(在system.web属性下)删除identity = true,并再次构build解决scheme,再次发布(如果需要),它的工作就像一个魅力!

我的问题最终是由于在我们的组策略中映射驱动器的更改而导致的。 我的解决scheme有在Web.config中设置tempDirectory设置以使用RAM驱动器设置作为我的Z:驱动器。 显然,他们开始使用Z:驱动器,DLL正常复制到tempDirectory,但后来我认为他们被远程服务器上的进程删除(很可能是病毒扫描)。 我只能通过使用进程监视器和筛选Antlr并看到它正在寻找DLL的networking位置。

我更新了Nudget Package Manager中的所有软件包,它工作正常! 在我的情况下,我在GoDaddy托pipe我的网站

试图删除.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”并重新启动服务器。 一切都还好。

对我来说,解决scheme是以pipe理员身份运行Visual Studio。 这显然是一个权限问题。

我的解决scheme是去工具> NuGet包pipe理器>解决scheme的pipe理包

然后点击Antlr3并确保它安装在:

  1. 启动项目
  2. 任何使用reflection的库
  3. 任何调用使用reflection的库的库

在我的案例中,有4个项目需要它。 一旦完成,这个问题终于解决了。