簡體   English   中英

NuGet在Visual Studio中強制更新依賴包

[英]NuGet force update of dependency packages in Visual Studio

我目前已經安裝了NuGet軟件包Xamarin.GooglePlayServices.Base版本32.961.0和Xamarin.Forms版本3.0.0.561731。 現在我想將Xamarin.GooglePlayServices.Base更新到最新版本60.1142.1,但是我不能,因為它具有NuGet包Xamarin.Android.Support.Compat(> = 26.0.2)依賴項,該包也依賴於Xamarin.Forms 3.0.0.561731。 另一方面,Xamarin.Forms通過Xamarin.Android.Support.v4(> = 25.4.0.2)具有對同一程序包的依賴關系。

我在VS中遇到以下版本沖突:

 MyApp.Android -> Xamarin.GooglePlayServices.Base 60.1142.1 -> Xamarin.GooglePlayServices.Basement 60.1142.1 -> Xamarin.Android.Support.Compat (>= 26.0.2) 
 MyApp.Android -> Xamarin.Forms 3.0.0.561731 -> Xamarin.Android.Support.v4 25.4.0.2 -> Xamarin.Android.Support.Compat (= 25.4.0.2).

如果我可以強制將依賴程序包Xamarin.Android.Support.v4更新到最新版本,那么它也需要更新版本的Xamarin.Android.Support.Compat,並且不再存在沖突。

NuGet在Visual Studio中強制更新依賴包

就像錯誤顯示一樣:

Xamarin.GooglePlayServices.Base 60.1142.1-> Xamarin.GooglePlayServices.Basement 60.1142.1-> Xamarin.Android.Support.Compat(> = 26.0.2)

Xamarin.Forms 3.0.0.561731-> Xamarin.Android.Support.v4 25.4.0.2-> Xamarin.Android.Support.Compat( = 25.4.0.2 )。

我們可以知道版本沖突來自Xamarin.Android.Support.Compat(> = 26.0.2)Xamarin.Android.Support.Compat(= 25.4.0.2) 然后檢查有關軟件包Xamarin.Forms的依賴項信息,我們可以知道Xamarin.Forms 3.0.0.561731 > Xamarin.Android.Support.v4> = 25.4.0.2 )。

因此,要解決此問題,我們只需Xamarin.Android.Support.v4軟件包Xamarin.Android.Support.v4更新到版本26.0.2即可 ,該軟件包具有依賴項Xamarin.Android.Support.Compat( 26.0.2 )。

為此,請卸載已添加的Xamarin.GooglePlayServices.Base軟件包,然后手動更新這些Xamarin.Android.Support.XXX軟件包

詳細步驟:

  1. 卸載項目並進行編輯。

  2. 將那些Xamarin.Android.Support.XXX程序包的版本更改為26.0.2:

     <ItemGroup> <PackageReference Include="Xamarin.Forms" Version="3.0.0.561731" /> <PackageReference Include="Xamarin.Android.Support.Design" Version="26.0.2" /> <PackageReference Include="Xamarin.Android.Support.v7.AppCompat" Version="26.0.2" /> <PackageReference Include="Xamarin.Android.Support.v4" Version="26.0.2" /> <PackageReference Include="Xamarin.Android.Support.v7.CardView" Version="26.0.2" /> <PackageReference Include="Xamarin.Android.Support.v7.MediaRouter" Version="26.0.2" /> </ItemGroup> 
  3. 重新加載項目,然后添加包Xamarin.GooglePlayServices.Base 60.1142.1

通過這種方式,您可以將Xamarin.GooglePlayServices.Base更新到最新版本60.1142.1

更新:

當文檔說> = 25.4.0.2時,為什么XF要求Xamarin.Android.Support.Design 25.4.0.2?

您可能需要再次檢查我上面的步驟, 安裝包Xamarin.GooglePlayServices.Base更新這些前Xamarin.Android.Support.xx包。

那是因為如果首先安裝Xamarin.GooglePlayServices.Base (60.1142.1) ,則NuGet將添加其依賴項Xamarin.Android.Support.Compat> = 26.0.2 )。

但是 ,安裝軟件包Xamarin.Forms (3.1.0.583944) ,默認情況下,NuGet將添加最低版本依賴關系。

Doc: NuGet如何解決程序包依賴性

因此,NuGet將添加Xamarin.Android.Support.xx 25.4.0.2 這就是為什么文檔說>= 25.4.0.2但NuGet添加版本25.4.0.2。的原因。 當然,由於文檔說>= 25.4.0.2 ,您可以將依賴項Xamarin.Android.Support.xx更新為26.0.2

因此解決方案是:

  1. 卸載Xamarin.GooglePlayServices.Base包, 不要再立即安裝它。

  2. 安裝程序包Xamarin.Forms (3.1.0.583944) ,並將那些Xamarin.Android.Support.xx 25.4.0.2更新為26.0.2 26.0.2 上面的“詳細信息”步驟 )。

  3. 添加軟件包Xamarin.GooglePlayServices.Base 60.1142.1

希望這可以幫助。

暫無
暫無

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

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