Xamarin Forms项目:如何改用GitHub源码替代NuGet包
替换Shiny NuGet包为GitHub源码适配Xamarin Forms方案
1. 拉取并准备源码
- 克隆Shiny仓库到本地:
git clone https://github.com/shinyorg/shiny.git - 切换到兼容Xamarin的分支:优先使用
main分支(官方声明兼容Xamarin),若仍有兼容性问题,可尝试切换到v3.x分支(针对Xamarin优化的稳定版本)
2. 修正目标框架不兼容问题
编译失败的核心原因是Shiny.BluetoothLE默认目标为netstandard2.1,而Xamarin Forms项目通常基于netstandard2.0,需调整Shiny项目配置:
- 打开Shiny.BluetoothLE项目的
.csproj文件 - 将单目标框架配置:
修改为多目标框架(同时兼容2.0和2.1)或直接切换到<TargetFramework>netstandard2.1</TargetFramework>netstandard2.0:<!-- 多目标推荐,兼顾Xamarin和MAUI --> <TargetFrameworks>netstandard2.0;netstandard2.1;net6.0-android;net6.0-ios</TargetFrameworks> - 同步调整其他Shiny核心子项目(如Shiny.Core、Shiny.Notifications等)的目标框架配置,确保与你的Xamarin项目兼容
3. 替换NuGet引用为源码项目
- 在你的Xamarin Forms项目中,卸载所有Shiny相关的NuGet包(包括依赖的子模块)
- 在解决方案中右键选择添加 -> 现有项目,导入本地Shiny源码中你需要的子项目(例如Shiny.Core、Shiny.BluetoothLE,以及对应Android/iOS平台的项目)
- 右键你的Xamarin Forms项目,选择添加 -> 项目引用,勾选已导入的Shiny子项目
4. 修复依赖与平台适配
- 检查Shiny子项目的NuGet依赖:打开Shiny项目的NuGet包管理器,确保所有依赖包(如Plugin.BLE、Newtonsoft.Json等)的版本与你的Xamarin项目环境兼容
- 针对Android/iOS平台项目,需额外添加对应Shiny平台项目的引用(如Shiny.BluetoothLE.Android、Shiny.BluetoothLE.iOS),并确认平台项目的目标SDK版本与你的项目匹配(例如Android目标SDK 11+,iOS目标SDK 14+)
5. 调试与代码修改
- 现在可直接在Shiny源码中设置断点、修改逻辑,调试你的Xamarin Forms项目
- 修改代码后重新编译Shiny子项目,主项目会自动引用更新后的代码
内容的提问来源于stack exchange,提问作者Cezar Wagenheimer
相关产品推荐
相关产品推荐

