【问题标题】:Find cause of multiple System.Web.Mvc references查找多个 System.Web.Mvc 引用的原因
【发布时间】:2015-04-24 21:45:34
【问题描述】:

使用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 文件。

Manage NuGet Packages 仅显示 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 的程序集绑定部分中是否有任何引用?如果不是,您可能需要添加它。它很可能是一个次要的依赖关系。
  • 它真的会导致问题吗?如果您的其他组件之一正在引用它,您可以尝试更新所有其他组件。但如果它没有引起任何错误,我会忽略它。
  • @Brian 我们在负载下遇到了严重的延迟问题,不得不回滚此更新。我们正在调查所有可能的原因。
  • 尝试删除项目的output (bin)lib 文件夹并重新引用相关的库。它解决了我一个类似的问题,因为 same dll 在输出文件夹中以不同的名称出现了两次。不确定这是否有帮助

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


【解决方案1】:

尝试将此添加到您的 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 开始)。
  • 嗯,这很有趣。也许尝试将 System.Web.MVC 引用标志“使用特定版本”设置为 true?我感觉到你对这个的痛苦。
  • 另一个需要检查的地方是项目的 Views 文件夹中的 web.config。
【解决方案2】:

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

从属性窗口你可以看到当前dependency 的版本。从中检查该版本并在web.config 文件中设置版本。

【讨论】:

  • -1。正如我明确指出的,Visual Studio 中的项目引用仅显示版本 5.2.3.0。我还说版本是在 Web.config 中设置的。
猜你喜欢
  • 2011-07-05
  • 2014-04-24
  • 1970-01-01
  • 1970-01-01
  • 2017-03-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多