在Xamarin.Forms中使用NuGet是否需要为每个项目单独安装?
Xamarin.Forms 项目NuGet包安装规则说明
是否需要在三个项目中分别安装?
不需要所有包都在三个项目逐一安装,具体安装位置取决于包的类型,存在两种安装方案:仅在共享主项目安装,或者在共享主项目+对应平台项目同时安装。
两种安装方式的优缺点
仅在共享主项目安装
- 优点
- 操作成本低,仅需安装一次,无需跨项目同步版本,从根源避免同包多版本冲突问题
- 项目引用结构更简洁,不会在各平台项目中产生冗余引用
- 缺点
- 仅支持纯.NET Standard实现、无平台特定原生绑定的跨平台包,若包包含平台专属实现,仅装共享项目会触发运行时找不到实现的异常
- 无法调用包提供的平台特定初始化、配置类API
在共享项目+各平台项目同时安装
- 优点
- 可正常使用包含平台原生实现的NuGet包的全部功能,支持平台侧初始化、原生能力调用等操作
- 不会出现平台端找不到对应原生类型、方法的运行时错误
- 缺点
- 必须保证所有项目安装的同一NuGet包版本完全一致,否则极易出现类型加载失败、API不兼容等问题
- 操作繁琐,包版本升级时需要同步更新所有关联项目的对应包版本
如何判断不同NuGet包的正确安装位置
- 若包明确标注为纯Xamarin.Forms跨平台工具包、无平台依赖,仅需安装到共享主项目
- 查看包的目标框架:如果包的依赖项包含
MonoAndroid、Xamarin.iOS等平台专属目标框架标识,就需要在对应平台项目也安装该包 - 若包的使用说明要求你在Android项目的
MainActivity.cs、iOS项目的AppDelegate.cs中调用初始化方法,必须在对应平台项目也安装该包,否则平台侧无法找到对应的API - 无原生绑定的纯逻辑类、工具类包,仅需安装到共享主项目即可
内容的提问来源于stack exchange,提问作者David Zomada
相关产品推荐
相关产品推荐

