13

不久前,我将一个项目从 MVC 3 移到了 MVC 4。

当我构建时,我会收到消息

1>  No way to resolve conflict between "System.Web.Mvc, Version=3.0.0.0 ..." and , Version=2.0.0.0
1>  Consider app.config remapping of assembly "System.Web.WebPages ..." from Version "1.0.0.0" to Version "2.0.0.0"  to solve conflict and get rid of warning.
1>  Consider app.config remapping of assembly "System.Web.WebPages.Razorfrom Version "1.0.0.0" [c:\Program Files (x86)\Microsoft ASP.NET\ASP.NET Web Pages\v1.0\Assemblies\System.Web.WebPages.Razor.dll] to Version "2.0.0.0" [C:\Users\OEM\documents\visual studio 2012\Projects\DabTrial\packages\Microsoft.AspNet.WebPages.2.0.30506.0\lib\net40\System.Web.WebPages.Razor.dll] to solve conflict and get rid of warning.

等等。

看reference的时候都是后期版本,web.config只指后期版本。当我通过公钥令牌(在 Windows 资源管理器中)搜索整个解决方案目录时,我发现没有引用早期版本的 XML 类型文件。

显然文件的路径不同,但我找不到编译器指向早期 .dll 文件路径的位置。

该项目构建并运行良好,但我认为编译器建议这些更改是有原因的。谢谢你的帮助。

4

3 回答 3

13

您的 nuget 依赖项可能引用了 MVC3 版本。您可以尝试将以下内容放入您的 Web 配置中以强制使用 MVC4 版本:

<runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-3.0.0.0" newVersion="4.0.0.0" />
      </dependentAssembly>
    </assemblyBinding>
</runtime>

您也可以尝试在包管理器控制台中运行以下命令

Update-Package -Reinstall

您必须至少拥有 2.1 版的 nuget 才能使用此命令,但如果您更新了 .NET,它将更新您的包并重新定位它们。您可以查看此帖子以获取更多信息。

从 .Net 4.0 到 4.5 的重定向解决方案 - 如何重定向 NuGet 包?

于 2013-06-06T00:47:11.443 回答
0

我也有这样的问题。我只做了两件事:

  • 将 System.Web.Mvc 和所有依赖项更新到最新版本 (5.2.3)
  • 重建所有解决方案(我使用“解决方案->清洁解决方案”,然后使用“解决方案->构建解决方案”)
于 2015-12-16T13:54:16.277 回答
0

尝试在项目文件中设置AutoGenerateBindingRedirects为。true

于 2020-12-29T15:16:33.753 回答