1. 程式人生 > >VS 提示:請考慮使用 app.config 將程式集“XXX”從版本“XX”重新對映到版本“XX”,以解決衝突並消除警告。

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 資料夾,發現確實是有兩個的
這裡寫圖片描述

有兩個的原因應該是我的工程包含了好幾個 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,所以 newVersion5.2.3.0

修改完儲存後重新生成專案就可以消除這個警告了。