解决Xamarin安装Nuget时版本冲突错误

写在前面:

随着 Xamarin 的生态环境逐渐好转,越来越多的第三方组件和工具包相继被众多开源开发者们推出,但当我们满心欢喜的集成这些组件 (Nuget) 到项目中时却并不是每一次都一帆风顺,有时候我们会遇到版本冲突的问题,架构不支持的问题..., 那么对于这些问题中最令人头疼的莫过于版本冲突的问题了,当我们已经安装的一些工具包与要安装的工具包发生依赖项版本不一致时就会遇到 Version conflict 的问题。

Package restore failed.

上面的那行输入我想并不是你期望看到的。

 NU1107: Version conflict detected for Xamarin.Android.Support.Compat. Reference the package directly from the project to resolve this issue. 
 MyApp -> Xamarin.Essentials 0.7.0.17-preview -> Xamarin.Android.Support.CustomTabs 27.0.2 -> Xamarin.Android.Support.Compat (= 27.0.2) 
 MyApp -> Xamarin.Forms 3.1.0.583944 -> Xamarin.Android.Support.v4 25.4.0.2 -> Xamarin.Android.Support.Compat (= 25.4.0.2).

每次当你想更新现有的组件或新安装组件时,你会发现过程非常艰难。

Origin Way

传统我们解决这些版本冲突问题的时候,我们通常会使用两种方法:

  1. 先更新依赖项组件的版本,或先安装缺失工具包,再安装新组件
  2. 直接卸载全部冲突依赖项,安装新组件时自动安装相应版本的依赖项

对于上面的两种方式而言,第二种在使用上更为极端且看起来更加方便,但是当如果还有其它已安装的组件以来需要卸载的工具包的时候,你发现这种方式并不可行;那么对于第一种方式而言,如果对于依赖项较少的组件来说,这种方式相对第二种更直接和快速,但是如果依赖比较多 (Xamarin.Android.Support.Compat)* 之类的包的时候你会发现首先你需要理解其中安装先后顺序,这其实也会浪费时间且容易让人崩溃。

New Way

首先我们可以分析以下这段错误的输出信息中告诉我们哪些内容:

  • Xamarin.Essentials requires some Xamarin.Android.Support bits >= 27.0.2
  • Xamarin.Forms requires some Xamarin.Android.Support bits >= 25.4.0.2

在 Android 中我们要安装组件时必须保证依赖项版本号符合规定要求。

从输入信息中我们发现 NuGet 试图告诉我们的是: 它无法确定安装Xamarin.Android.Support.Compat 到哪个版本,因为依赖关系无法就该版本应该是什么达成一致。

这里我们新的解决方案是:

通过明确声明它应该使用的版本来帮助 NuGet,在这种情况下我们可以更容易地推断出,因为 Xamarin.Forms 适用于 Android Support 应该大于 25.4.0.2,且因为 Xamarin.Essentials 至少 需要27.0.2,我们应该选择 27.0.2 安装,这里我们可以直接修改我们 .Net Standard 层和 Android 层的项目我们 (.csproject)


同样还有通过这种方式去添加其它的依赖项工具包,比如拿Xamarin.Forms来说:

解决Xamarin安装Nuget时版本冲突错误_第1张图片
xamarin.forms

其中 Android 里需要依赖5个依赖库,这里我们同样可以通过手动编辑项目文件的形式去添加相应的依赖项:

    
    
    
    
    

然后再安装就可以发现版本冲突的问题就可以解决了。之后你可能会在项目中多次遇到此类问题。在这种情况下,只需继续向项目添加显式版本的依赖声明,就能解决相应的版本冲突问题。

到这里在 Fix the 'Version conflict' NuGet error in Xamarin Project 就介绍完了,希望能对您有所帮助。


——End 有问题可以加我微信,大家一起讨论,加好友前请备注您的简称,谢谢!

解决Xamarin安装Nuget时版本冲突错误_第2张图片

你可能感兴趣的:(解决Xamarin安装Nuget时版本冲突错误)