我在尝试运行我的MVC4
项目时遇到此错误,直到上次在其他计算机上都可以正常工作,但是当我尝试从另一台计算机上运行它时,出现此错误:
无法加载文件或程序集“ Antlr3.Runtime(1)”或其依赖项之一。找到的程序集的清单定义与程序集引用不匹配。(来自HRESULT的异常:0x80131040)
安装包Antlr3.Runtime -Pre
但这没有帮助,有什么想法吗?
Answers:
在尝试免费的Nlog日志记录平台时,我遇到了相同的问题。
这对我有帮助:
在文件资源管理器中输入%TEMP%并删除所有临时文件。
之后,在Visual Studio中启动我的MVC5项目时,我没有收到错误消息。
不要忘了还要清除中的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
以防万一这对某人有帮助。
我在MVC 5应用程序中遇到了这个问题。从bin目录中删除Antlr3.Runtime.dll并重新生成可解决此问题。
我的问题是WebGrease的最新版本安装了Antlr的3.4.1.9004版本。一旦我安装了WebGrease,然后将Antlr更新到版本3.5.0.2,该错误就消失了。
对我来说,在web.config文件中删除此节点摆脱了错误消息:
<identity impersonate="true" userName="" password="">
但是,对我真正有用的是,授予对C:\ Windows \ Microsoft.NET \ Framework {version}(或Framework64)中找到的Temporary ASP.NET Files“文件夹的完全访问权限(以模拟方式指定的userName)。
身份也可能存储在IIS的“网站应用程序池设置”中。
确保以正确的版本正确安装了nuget软件包。如果没有其他效果,则只需尝试从本地文件夹重新添加引用并将其设置为“复制本地”。
ASPNET_REGIIS -GA impersonatedusername
如果有解决方案解决您的问题,请验证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>
web.config中的impersonate =“ true”出现问题,我删除了它起作用的行!
我再次下线,并以模拟方式授予管理员权限给帐户用户,我的整个应用程序都正常工作:)
如果您使用模拟。答案是授予用户您要模拟访问以下文件夹的权限:
C:\Windows\Microsoft.NET\Framework[v4.0.30319 or the version that you're using]\Temporary ASP.NET Files
您的站点目录。
也可能需要创建以下文件夹:
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
在一个项目中,我引用了WebGrease,但在package.config中没有相应的元素。我从项目中删除了引用,因为我不再需要它了。现在可以使用了。
对我有用的是从我的webconfig中(在system.web属性下)删除identity = true,并再次构建解决方案并再次发布(如果需要),它就像一个魅力!
我的问题最终是由于我们的组策略中的映射驱动器发生了更改。我的解决方案在Web.config中设置了tempDirectory设置,以将RAM驱动器设置用作我的Z:驱动器。显然他们开始使用Z:驱动器,并且DLL像往常一样被复制到tempDirectory,但是后来我认为它们已被远程服务器上的进程删除(可能是病毒扫描)。我只能通过使用Process Monitor并对Antlr进行过滤,然后查看它是否在网络位置查找DLL来解决这个问题。
尝试成功删除.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”并重新启动服务器。一切都还好。
对我来说,解决方案是以管理员身份运行Visual Studio。显然这是一个权限问题。
我只是遇到了这个问题,并尝试了上述解决方案,但目前无济于事,我不得不从bin floder中删除它的dll并进行重建,然后从packages文件夹中删除所有已释放的文件,并使用package manager控制台还原包
已删除%temp%
删除的垃圾箱
删除的.vs
现在为我工作
升级后我遇到了这个问题 Microsoft.AspNet.Web.Optimization
update-package WebGrease
和update-package Antlr
(按顺序),以获得最新版本,并纠正ANTLR的版本问题。