我目前已安装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,并且冲突消失了。
答案 0 :(得分:1)
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
升级到版本 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
。
更新:
为什么XF要求Xamarin.Android.Support.Design 25.4.0.2, 文档说> = 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将添加最低版本依赖性。
文档:How NuGet resolves package dependencies
因此,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
(检查上述详细信息步骤)。
添加软件包Xamarin.GooglePlayServices.Base 60.1142.1
。
希望这会有所帮助。