用nuget第三方庫的時候,經常會出現一些nuget沖突的問題,基本都是多個第三方類庫引用同一個類庫的不同版本導致的
有時候Visual Studio自己就能幫咱們解決,你需要在警告消息上雙擊,vs就會在配置文件中給你添加 dependentAssembly 來解決沖突
但是,有時候會出現一個【發現無法解析的“xxx”的不同版本之間存在沖突】的問題,這個vs就沒辦法幫咱們解決了,比如我這個
嚴重性 代碼 說明 項目 文件 行 禁止顯示狀態
警告 發現無法解析的“SharpCompress”的不同版本之間存在沖突。
“SharpCompress, Version=0.23.0.0, Culture=neutral, PublicKeyToken=afb0a02973931d96”與“SharpCompress, Version=0.30.1.0, Culture=neutral, PublicKeyToken=afb0a02973931d96”之間存在沖突。
已選擇“SharpCompress, Version=0.23.0.0, Culture=neutral, PublicKeyToken=afb0a02973931d96”,因為它是主版本而“SharpCompress, Version=0.30.1.0, Culture=neutral, PublicKeyToken=afb0a02973931d96”不是。
依賴於“SharpCompress, Version=0.23.0.0, Culture=neutral, PublicKeyToken=afb0a02973931d96”[C:\Users\zzz\.nuget\packages\sharpcompress\0.23.0\lib\net45\SharpCompress.dll]的引用。
C:\Users\zzz\.nuget\packages\sharpcompress\0.23.0\lib\net45\SharpCompress.dll
導致引用“C:\Users\zzz\.nuget\packages\sharpcompress\0.23.0\lib\net45\SharpCompress.dll”的項目文件項 Include 特性。
C:\Users\zzz\.nuget\packages\sharpcompress\0.23.0\lib\net45\SharpCompress.dll
依賴於“SharpCompress, Version=0.30.1.0, Culture=neutral, PublicKeyToken=afb0a02973931d96”[]的引用。
C:\Users\zzz\.nuget\packages\mongodb.driver.core\2.13.3\lib\net452\MongoDB.Driver.Core.dll
導致引用“C:\Users\zzz\.nuget\packages\mongodb.driver.core\2.13.3\lib\net452\MongoDB.Driver.Core.dll”的項目文件項 Include 特性。
C:\Users\zzz\.nuget\packages\mongodb.driver.core\2.13.3\lib\net452\MongoDB.Driver.Core.dll
C:\Users\zzz\.nuget\packages\mongodb.driver\2.13.3\lib\net452\MongoDB.Driver.dll
看具體的描述,依然是2個類庫引用不同版本的dll導致的,不同的地方在於,有個所謂的“主版本”,不知道vs是什么怎么算的,反正最后所謂的主版本是比較低的0.23.0.0版本,nuget本地目錄每次下載的都是這個主版本,然而,Mongodb.Driver.Core.dll要用的卻是0.30.1.0這個高版本,於是就出現了【發現無法解析的“SharpCompress”的不同版本之間存在沖突】
最開始我是想看怎么能修改這個“主版本”,將其弄成0.30.1.0,但是無從下手,只能放棄
后來在網上看到一個辦法,既然咱們控制不了第三方引用的版本,那么咱們就自己也get個SharpCompress來控制
具體操作是直接在沖突的項目中手動nuget這個SharpCompress,裝載的時候選擇0.30.1.0這個高版本
這樣本地的nuget目錄下就會出現0.30.1.0這個版本了,重新生成解決方案,之前的警告終於消失了
最后再吐槽下,vs2022不知道是剛出來還不穩定的問題還是以前版本就有這個問題
經常會出現明明nuget包已經更新了,但是發布后依然是舊版本的現象,以及一些其他莫名其妙的詭異現象
這個時候可以通過刪除項目下的obj文件夾或者解決方案下的.vs文件夾來嘗試解決問題
這2個文件夾刪除后還能重新生成