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


今天在工作中出現一個引用問題,害我找問題找了很久。起因是在一個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包解決的話嘗試使用版本映射方法。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM