1. 程式人生 > >.Net Framework項目引用.NetStandard標準庫出現版本沖突解決辦法

.Net Framework項目引用.NetStandard標準庫出現版本沖突解決辦法

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標準庫出現版本沖突解決辦法