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) 这也是 [= 的依赖项19=] 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 force update of dependency packages in 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) and 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
。
更新:
Why does XF request Xamarin.Android.Support.Design 25.4.0.2, when the
docs say >= 25.4.0.2?
您可能需要再次检查我的上述步骤,在更新那些 Xamarin.Android.Support.xx
软件包之前,请不要 安装软件包 Xamarin.GooglePlayServices.Base
。
那是因为如果您先安装 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
软件包,NOT 立即重新安装。
安装软件包 Xamarin.Forms (3.1.0.583944)
,并将 Xamarin.Android.Support.xx 25.4.0.2
更新为 26.0.2
(检查以上详细步骤)。
添加包Xamarin.GooglePlayServices.Base 60.1142.1
.
希望这对您有所帮助。
我目前已经安装了 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) 这也是 [= 的依赖项19=] 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 force update of dependency packages in 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) and 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
。
更新:
Why does XF request Xamarin.Android.Support.Design 25.4.0.2, when the docs say >= 25.4.0.2?
您可能需要再次检查我的上述步骤,在更新那些 Xamarin.Android.Support.xx
软件包之前,请不要 安装软件包 Xamarin.GooglePlayServices.Base
。
那是因为如果您先安装 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
软件包,NOT 立即重新安装。安装软件包
Xamarin.Forms (3.1.0.583944)
,并将Xamarin.Android.Support.xx 25.4.0.2
更新为26.0.2
(检查以上详细步骤)。添加包
Xamarin.GooglePlayServices.Base 60.1142.1
.
希望这对您有所帮助。