.Net Framework項目引用.NetStandard標準庫出現版本沖突解決辦法
阿新 • • 發佈:2019-02-17
ets tro fig 它的 需要 http red run 文件
今天在工作中出現一個引用問題,害我找問題找了很久。起因是在一個Winform項目下需要引用一個.NetStandard標準庫,標準庫引用了System.ComponentModel.Annotations程序集,版本是4.5.0,在Winform項目運行過程中拋出了以下異常:
“未能加載文件或程序集“System.ComponentModel.Annotations, Version=4.2.0.0, Culture=neutral,
PublicKeyToken=b03f5f7f11d50a3a”或它的某一個依賴項。找到的程序集清單定義與程序集引用不匹配。
(異常來自 HRESULT:0x80131040)”
剛出現這個錯誤時候還不以為然,以為直接在Winform項目的Nuget管理器中將System.ComponentModel.Annotations升級成4.5.0即可。當然結局並不完美~ 然後Google,終於在Github上招到了相關Issues
問題原因
通過Issues也了解了問題的根本,實際上.NetStandard標準庫雖然是向下兼容(允許.NetFomework引入),但是也不是完全的“匹配”,有時候需要通過 “版本映射”解決。
解決辦法
在Winform啟動項的配置文件App.Config下的configuration -->runtime -->assemblyBinding 節點下新增如下配置
<dependentAssembly> <assemblyIdentity name="System.ComponentModel.Annotations" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" /> <bindingRedirect oldVersion="0.0.0.0-4.2.1.0" newVersion="4.2.1.0" /> </dependentAssembly>
如下圖:
總結
下次出現引用問題時候,先檢查Nuget包是否一致,如果不能通過同步Nuget包解決的話嘗試使用版本映射方法。
.Net Framework項目引用.NetStandard標準庫出現版本沖突解決辦法