查找多个System.Web.Mvc引用的原因

时间:2015-04-24 21:45:35

标签: c# asp.net-mvc asp.net-mvc-5 nuget projects-and-solutions

使用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。这没有任何区别。

预计会有多个版本吗?如果没有,我如何找到并删除旧版本的来源?

2 个答案:

答案 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文件中设置版本。