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


82

我在尝试运行我的MVC4项目时遇到此错误,直到上次在其他计算机上都可以正常工作,但是当我尝试从另一台计算机上运行它时,出现此错误:

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

这里阅读完有关内容后我尝试执行以下操作

安装包Antlr3.Runtime -Pre

但这没有帮助,有什么想法吗?


1
您是否尝试取消安装上一个。在安装上述版本之前是哪个版本?
Spock

1
我没有更新任何版本。刚更换机器
Maven

您是否尝试右键单击解决方案,然后单击“启用nuget软件包还原”?
TS

此处的答案均无济于事,但此重复项的答案确实有用。
DCShannon 2014年

Answers:


102

在尝试免费的Nlog日志记录平台时,我遇到了相同的问题。

这对我有帮助:

在文件资源管理器中输入%TEMP%并删除所有临时文件。

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


我的错误消息没有“(1)”,但是此解决方案仍然有效
Roberto

10
谢谢你 像这样的Microsoft废话有时会让您想要
精通

太棒了!! 浪费了太多时间。我的问题不是构建部分,但是在詹金斯服务器上使用pubxml文件发布工件失败,而在本地计算机上运行正常。如上所述,一旦删除了临时文件夹,发布工件就可以正常工作。
yyardim '17

40

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

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

7
谢谢。对我来说,选择2很有帮助
拉比2014年

我同意@Rabbi。选项2解决了我的问题。希望我能赞成你的答案10次!非常感谢你。:)
安妮·拉冈

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为我做到了
Joshua Ohana 2015年

这适用于我和另一个引用的project-dll。在我的情况下,Web项目中的所有引用均已损坏,消息是:“无法加载文件或程序集'whatever.dll'或其依赖项之一”。清理后,可以创建dll引用,并且一切正常。
Fer R

27

以防万一这对某人有帮助。
我在MVC 5应用程序中遇到了这个问题。从bin目录中删除Antlr3.Runtime.dll并重新生成可解决此问题。


这对我有用。谢谢。但是我仍然不确定这个错误的真正原因。有人可以解释。
mukulsharma1146 '16

1
就我而言,我不得不删除WebGrease.dll
Tharwen

谢谢。。。花了3个小时尝试解决此问题,这是摆脱我的YSOD的步骤。
约书亚K

18

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


11
我的问题正是这个问题。我必须通过卸载Microsoft.AspNet.Web.Optimization,WebGrease和Antlr(按该顺序)在包管理器控制台中展开依赖关系链,然后安装程序包Microsoft.AspNet.Web.Optimization,更新程序包WebGrease,最后进行更新-按顺序打包Antlr以获得最新版本并更正Antlr版本问题。
韦德

13

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

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

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

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

确保以正确的版本正确安装了nuget软件包。如果没有其他效果,则只需尝试从本地文件夹重新添加引用并将其设置为“复制本地”。


1
这为我解决了这个问题。web.config在登台环境中具有模拟设置,并且该用户帐户在我的开发环境中不存在。
ttomsen

我尝试了所有三个建议,但没有一个起作用。仍然获得YPOD 1.我的web.config中没有<identity标记。2.我对iis_usrs和users \ johnny都给予了“完全控制”权。3.最后的选择似乎是一个hack
dannyrosalex

我使用以下命令解决了问题:ASPNET_REGIIS -GA impersonatedusername
cslecours

这有助于解决我的问题。我在本地工作,由于此元素中提到的帐户名称无法访问我的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

7

一种简单的方法是更新antlr和webgrease

  1. 转到程序包控制台管理器
  2. 然后尝试一一应用这些代码
  3. PM>更新包Antlr
  4. PM>更新包Web润滑脂

终于解决了错误


2

对我来说,这是由于Antlr的调试版本与运行时版本之间不匹配而引起的。

最后通过安装另一个Antlr软件包解决了它:Install-Package Antlr


2

如果您手动添加引用,请尝试解锁Antlr3.Runtime.dll: 在此处输入图片说明



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


0

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


0

我尝试了本文中的所有答案,但没有一个对我有用。

因此,我从解决方案中删除了所有项目中的所有/ bin目录,清理并重建了该解决方案,终于成功了!

我整个上午都在浪费时间去解决问题。


0

对我有用的是从我的webconfig中(在system.web属性下)删除identity = true,并再次构建解决方案并再次发布(如果需要),它就像一个魅力!


这应该在评论中
Usman Maqbool

0

我的问题最终是由于我们的组策略中的映射驱动器发生了更改。我的解决方案在Web.config中设置了tempDirectory设置,以将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

我只是遇到了这个问题,并尝试了上述解决方案,但目前无济于事,我不得不从bin floder中删除它的dll并进行重建,然后从packages文件夹中删除所有已释放的文件,并使用package manager控制台还原包



0

就我而言,当我克隆一个项目时,Visual Studio 2019在项目路径中将空格字符替换为'%20'。然后,当VS尝试查找块包时,它找不到正确的路径。


0

升级后我遇到了这个问题 Microsoft.AspNet.Web.Optimization

update-package WebGreaseupdate-package Antlr(按顺序),以获得最新版本,并纠正ANTLR的版本问题。


0

对我来说,我做了这些步骤,对我有用:

1)我删除binobj文件夹(某些文件未被Clean项目删除)

2)我检查了很久以前删除的某些文件(如JS),但它们已包含在项目文件中。所以我排除了它们。


0

我有一个简单的解决方案。转到您自己的项目文件夹,然后找到一个包文件夹。

在此处输入图片说明

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.