visual studio express 2012 app.config重映射程序集

visual studio express 2012 app.config remapping assembly

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

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

1
2
3
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
et40\System.Web.WebPages.Razor.dll] to solve conflict and get rid of warning.

等等。

当我查看引用时,它们都是较新版本,web.config只引用较新版本。当我使用公钥标记(在Windows资源管理器中)搜索整个解决方案目录时,没有找到引用早期版本的XML类型文件。

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

项目构建和运行良好,但我认为编译器出于某种原因建议进行这些更改。谢谢你的帮助。


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

1
2
3
4
5
6
7
8
<runtime>
   
      <dependentAssembly>
       
        <bindingRedirect oldVersion="0.0.0.0-3.0.0.0" newVersion="4.0.0.0" />
      </dependentAssembly>
    </assemblyBinding>
</runtime>

您还可以尝试在包管理器控制台中运行以下内容

1
Update-Package -Reinstall

此命令必须至少有nuget的2.1版本,但如果更新了.NET,它将更新包并重新定位它们。你可以查看这篇文章了解更多信息。

将解决方案从.NET 4.0重新定位到4.5-如何重新定位Nuget包?


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

  • 更新了system.web.mvc和最新版本(5.2.3)的所有依赖项
  • 重新生成所有解决方案(我使用了"解决方案->干净解决方案",然后是"解决方案->生成解决方案")。