使用dotPeek检查Web项目主程序集的引用,我看到:
System.Web.Mvc, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35
System.Web.Mvc, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35
Visual Studio中的项目引用仅显示版本5.2.3.0。我还搜索了引用项目的.csproj文件。
管理NuGet包仅显示Microsoft.AspNet.Mvc的v5.2.3。
搜索packages
文件夹只会在Microsoft.AspNet.Mvc.5.2.3\lib\net45
下找到v5.2.30128.0。
gacutil /l System.Web.Mvc
显示版本3.0.0.0和4.0.0.0。
我已经通过dotPeek的References Hierarchy查看了其他参考文献,但我找不到旧版本。
根据回复,我检查了Web.config;这已经存在了:
<dependentAssembly>
<assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="0.0.0.0-5.2.3.0" newVersion="5.2.3.0" />
</dependentAssembly>
我还检查了其他Web.configs是否存在冲突版本。
此外,我尝试在System.Web.Mvc引用属性中将Specific Version设置为True。这没有任何区别。
预计会有多个版本吗?如果没有,我如何找到并删除旧版本的来源?
答案 0 :(得分:2)
尝试将此添加到您的web.config
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="1.0.0.0-5.2.3.0" newVersion="5.2.3.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
这基本上测试你的应用程序,对于在应用程序中引用的System.Web.MVC的任何版本(来自1-5.2.3),使用5.2.3.0。很可能你有一个参考仍在寻找5.0的特定版本。这让JSON.net一直在燃烧我。
答案 1 :(得分:0)
从引用中删除多个现有dependency
。之后,添加要保留在项目中的reference
。
在属性窗口中,您可以看到当前dependency
上的版本。从中检查该版本并在web.config
文件中设置版本。