无法加载文件或程序集“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
- 转到包控制台pipe理器
- 然后尝试逐一应用这些代码
- PM> Update-Package Antlr
- 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并确保它安装在:
- 启动项目
- 任何使用reflection的库
- 任何调用使用reflection的库的库
在我的案例中,有4个项目需要它。 一旦完成,这个问题终于解决了。