VS 提示:请考虑使用 app.config 将程序集“XXX”从版本“XX”重新映射到版本“XX”,以解决冲突并消除警告。

具体提示如下:

请考虑使用 app.config 将程序集“System.Web.Http.WebHost, Culture=neutral, PublicKeyToken=31bf3856ad364e35”从版本“5.0.0.0”[D:\Code…(项目路径就省略了)\bin\System.Web.Http.WebHost.dll]重新映射到版本“5.2.3.0”[D:\Code…\packages\Microsoft.AspNet.WebApi.WebHost.5.2.3\lib\net45\System.Web.Http.WebHost.dll],以解决冲突并消除警告。

其实这不是个 错误,是 警告 级别的,所以你也可以忽略它。不过博主是个强迫症患者,所以决定“消灭”它。=。=

下面就来分析一下,找出k.o.它的办法~~~

初步估计原因应该是有某个dll的两个版本,VS 建议使用新的。

于是我打开项目的 packages 文件夹,发现确实是有两个的
VS 提示:请考虑使用 app.config 将程序集“XXX”从版本“XX”重新映射到版本“XX”,以解决冲突并消除警告。_第1张图片

有两个的原因应该是我的工程包含了好几个 asp.net 项目,有些是比较早前新建的【上一年了,而且同事建的时候用的 VS2013,我的是 VS2015 】,然后我昨天又新建了一个,应该是默认引入的 System.Web.Http.WebHost 版本不一样,所以造成了有两个版本。

直接从 packages 文件夹删除是不行的,因为生成项目的时候 nuget 会还原,而且如果你的工程包含多个项目,也不知道哪个项目用了旧版。删除会造成一些问题。
简单点的操作方法是在 web.config 文件里面添加说明,指定用哪个版本就好啦

VS 提示:请考虑使用 app.config 将程序集“XXX”从版本“XX”重新映射到版本“XX”,以解决冲突并消除警告。_第2张图片
runtime 下面的 assemblyBinding 节点,里面包含的每个 dependentAssembly 节点就是定义引用程序集的版本,仿照原有的添加一个就好了。

<dependentAssembly>
  <assemblyIdentity name="System.Web.Http.WebHost" culture="neutral" publicKeyToken="31bf3856ad364e35" />
  <bindingRedirect oldVersion="0.0.0.0-5.2.3.0" newVersion="5.2.3.0" />
dependentAssembly>

PS:VS提示让我们重新映射到 5.2.3.0,所以 newVersion5.2.3.0

修改完保存后重新生成项目就可以消除这个警告了。

你可能感兴趣的:(visual,studio)