具体提示如下:
请考虑使用 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
文件夹,发现确实是有两个的
有两个的原因应该是我的工程包含了好几个 asp.net
项目,有些是比较早前新建的【上一年了,而且同事建的时候用的 VS2013
,我的是 VS2015
】,然后我昨天又新建了一个,应该是默认引入的 System.Web.Http.WebHost
版本不一样,所以造成了有两个版本。
直接从 packages
文件夹删除是不行的,因为生成项目的时候 nuget
会还原,而且如果你的工程包含多个项目,也不知道哪个项目用了旧版。删除会造成一些问题。
简单点的操作方法是在 web.config
文件里面添加说明,指定用哪个版本就好啦
看 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
,所以 newVersion
写 5.2.3.0
。
修改完保存后重新生成项目就可以消除这个警告了。