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

Find cause of multiple System.Web.Mvc references

使用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 的引用层次结构查看了其他引用,但没有找到旧版本。

根据回复我检查了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.config 是否存在冲突版本。

此外,我尝试在 System.Web.Mvc 参考属性中将特定版本设置为 True。这没有什么区别。

是否需要多个版本?如果没有,如何找到并删除旧版本的源?

尝试将此添加到您的 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.

这让我一直很生气

从引用中删除多个现有 dependency。之后添加您要保留在项目中的 reference

并且从 属性 window 您可以看到当前 dependency 上的版本。从中检查该版本并在 web.config 文件中设置版本。