System.Net.Http的不同版本間發現衝突如何解決

最近準備接外包出去的.NET Framework MVC專案回公司,看到專案內bin,packages,全都直接放專案內,卸載出專案時清除重建,出現某些元件版本異常的警告,直接Run起來出現了無法載入檔案或組件 System.Net.Http,怎樣解呢?

起因

預備接手外包出去的程式,雖然大家都心知肚明是一坨X,但是看到專案內把bin、nuget套件全部加進專案內,

整包肥成這樣上Git,會出4的阿伯,移除出專案後,清除專案重建直接炸一堆錯誤出來,

有查到一些錯誤是.net framework 4跳4.5以上版本才會出現的問題,.csproj 清理後發現還有 System.Net.Http版本衝突的問題,

但是在.csproj 中的參考已經沒有版本設定了,還是噴這錯誤。

解決方式

System.Net.Http其實在目前專案 .Net Framework 4.6.2內部就有包含了,出現這問題是除了.Net Framework外還有其他地方指定了參考,

最後終於發現在web.config中….

查詢到有些解法是,將版本號改成一致的,那我的處理方式是,這整塊都移除<dependentAssembly></dependentAssembly>,因為直接開一個mvc Webapi專案,

沒看到這個參考,看起來自動抓(?),砍了 run起來,很棒! 沒事能動沒黃頁。

記錄一下解決方式

負能量

這專案理論上如果是用新開專案的方式開發,不會出現這種鳥錯誤,導致Nuget packages、bin全都需要加入到專案內才能運行,

可怕的是不透過正常佈署方式,直接將這整個專案丟在IIS上跑,真棒大家都能進來拿code呢….雖然是一坨X