![](/img/trans.png)
[英]How to update nuget packages without package manager of 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軟件包 :
詳細步驟:
卸載項目並進行編輯。
將那些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>
重新加載項目,然后添加包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
。
因此解決方案是:
卸載Xamarin.GooglePlayServices.Base
包, 不要再立即安裝它。
安裝程序包Xamarin.Forms (3.1.0.583944)
,並將那些Xamarin.Android.Support.xx 25.4.0.2
更新為26.0.2
( 請 26.0.2
上面的“詳細信息”步驟 )。
添加軟件包Xamarin.GooglePlayServices.Base 60.1142.1
。
希望這可以幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.