MVC 程序在编译时提示 GAC与 Temporary ASP.NET Files目录内引用文件版本不一致
今天在调试Mvc程序时,提示GAC与Temporary ASP.NET Files目录内引用文件版本不一致。
[A]System.Web.WebPages.Razor.Configuration.HostSection cannot be cast to
[B]System.Web.WebPages.Razor.Configuration.HostSection.
Type A originates from 'System.Web.WebPages.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' in the context 'Default' at location 'C:\windows\Microsoft.Net\assembly\GAC_MSIL\System.Web.WebPages.Razor\v4.0_2.0.0.0__31bf3856ad364e35\System.Web.WebPages.Razor.dll'.
Type B originates from 'System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' in the context 'Default' at location
'C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\vs\c6247a09\b563b17c\assembly\dl3\6828be27\18b62d01_f301d301\System.Web.WebPages.Razor.dll'
产生原因:Views目录下的Web.config的<configSections>节点内配置的版本与 IIS站点主目录内Web.Config内配置的节点版本不一致。
Views目录内Web.config的DLL默认引用位置是GAC目录内文件;IIS站点主目录引用的是Temporary ASP.NET Files目录内的文件。
解决办法一:
1、打开IIS站点主目录内Web.Config文件,转到<runtime>节点
2、将出错的的版本做重定向处理,例:
<dependentAssembly>
<assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="0.0.0.0-5.2.3.0" newVersion="5.2.3.0" />
</dependentAssembly>
解决办法二:
将Views目录内Web.config文件<configSections>节点的版本号修改为与IIS站点主目录内Web.Config内文件版本一致。
注意事项:上述两种方法修改后,一定要再将Temporary ASP.NET Files目录内的临时文件清除。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 葡萄城 AI 搜索升级:DeepSeek 加持,客户体验更智能
· 什么是nginx的强缓存和协商缓存
· 一文读懂知识蒸馏