簡體   English   中英

解決 Microsoft NuGet 包引用中的版本沖突的正確方法是什么?

[英]What is the Correct Way to Resolve Versioning Conflicts in Microsoft NuGet Package References?

在 Visual Studio 2019 16.11.5(最新)中,我安裝了“Visual Studio 擴展開發”工作負載。

我可以用它來創建一個 C# VSIX 項目。 如果我這樣做,它會像您期望的那樣構建和運行良好,並且沒有編譯器警告或錯誤。

如果我轉到工具/管理 NuGet 包尋求解決方案...我可以看到我安裝了 NuGet 包 Microsoft.VisualStudio.SDK v16.0.206,但最新版本是 v16.10.31321.278。

如果我轉到“更新”選項卡,我可以選擇軟件包並單擊“更新”以獲取最新版本。

執行此操作后,該項目仍會構建並運行,但我收到有關依賴庫版本不兼容的編譯器警告:

Found conflicts between different versions of "Microsoft.VisualStudio.Validation" that could not be resolved. There was a conflict between "Microsoft.VisualStudio.Validation, Version=16.9.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" and "Microsoft.VisualStudio.Validation, Version=16.10.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a". "Microsoft.VisualStudio.Validation, Version=16.9.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" was chosen because it was primary and "Microsoft.VisualStudio.Validation, Version=16.10.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" was not.

有更多關於不兼容的細節,似乎是說主包引用了 16.9.0,一些依賴庫引用了 16.10.0。 如果我查看 project.assets.json,我可以看到構建實際上使用了 v16.9.32。

所以問題是:刪除此編譯器警告並安全地使用最新的 SDK 來構建我的 VSIX 的正確做法是什么?

閱讀本文后,我看到了一些選項。 我可以取消警告,但由於它沒有代碼,我看不到如何。 我無法升級包。 或者我可以安裝特定版本的 Microsoft.VisualStudio.Validation 並使用綁定重定向來消除警告,盡管我不知道版本應該是什么。 如果程序集使用 semver,則 16.10.x 似乎是正確的庫,而不是構建使用的 16.9.32。

問題是有兩個不同版本的Microsoft.VisualStudio.Validation.dll文件,VS(MSBuild) 無法確認使用哪個版本。 一個來自已安裝的 NuGet 包,另一個來自系統參考(集成在 VS 中)。 當然,VS 選擇使用主要的。

解決方案應該是安裝一個Microsoft.VisualStudio.Validation NuGet 包,版本16.10.34 是的,它可以在nuget.orgnuget.org

我認為這不是一個真正的解決方案,它確實使警告消失,但在我看來,該問題應該從 NuGet 包( Microsoft.VisualStudio.SDK )方面解決。 在安裝/更新Microsoft.VisualStudio.SDK包的過程中,還應自動安裝Microsoft.VisualStudio.Validation包的 16.10.XX 版本。 也許這會在Microsoft.VisualStudio.SDK包的新發布版本中得到修復,我不確定。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM