VS 提示:請考慮使用 app.config 將程式集“XXX”從版本“XX”重新對映到版本“XX”,以解決衝突並消除警告。
阿新 • • 發佈:2018-11-05
具體提示如下:
請考慮使用 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
。
修改完儲存後重新生成專案就可以消除這個警告了。