c# - 创建多目标 Xamarin.Forms NuGet 包
问题描述
我正在尝试构建一个可以安装在 Xamarin.Android、Xamarin.iOS、Xamarin.UWP 和 Xamarin.Forms(.NET 标准)项目中的 NuGet 包。我不能使用 .NET Standard,因为我需要Activity
为我的 Android 项目自定义AppDelegate
、为我的 iOS 项目自定义,以及为我的 UWP 项目自定义 MainPage。在发起程序中,我想使用ServiceCollection
作为 DI 提供程序。
在文档中,他们仍然提到Portable Class Library(明确提到的遗留,在 VS 中不再存在),或手动创建包(无法弄清楚在这里做什么),然后你也有网站Xamarin.Forms Plugin
提到也不再存在。
我已经为所有 4 个项目制定了解决方案,但我不知道如何为所有 4 个项目(所有 3 个目标平台)创建单个 NuGet 包。
有谁知道我们如何构建一个包含 Android、iOS 和 UWP 代码的多目标 NuGet 包,就像Xamarin.Forms NuGet 包一样?
我还看到过这样的讨论:如何创建一个项目来为支持 iOS、Android 和 UWP 的 Xamarin Forms 创建 Nuget 包?,但我不确定这是否仍然相关,因为build.props
andbuild.targets
不再存在于 MvvmCross 存储库中。
解决方案
起点是https://github.com/onovotny/MSBuildSdkExtras
一年前,我做了一个示例(并收集了一些文档和参考资料),这可能对这个主题很有启发:https ://github.com/ZeProgFactory/MSBuildSdkExtrasTest
并且https://github.com/ZeProgFactory/MediaPlayer正在使用它
最后,您应该在https://github.com/jamesmontemagno查看 James Montemagno 组件的存储库
有了这些参考资料,您应该可以开始了。但是所有这些都与您的方法有很大的不同:
- 他们正在使用一个项目(通过 MSBuildSdkExtras),
- 这是为所有平台构建的
- 最后,将二进制文件组装到一个 NuGet 中。
也许你可能只采取这最后一步。无论如何,这种方法至少是一种选择。希望这会有所帮助……</p>
推荐阅读
- javascript - 为什么这本书建议你可以重载 javascript 构造函数?
- node.js - 错误重定向以在本地身份验证后使用 node js express 对护照做出反应
- c# - Automapper ConstructServices在 Umbraco 8 中使用
- mongodb - MongoDB Mongoose 方案嵌套文档结构和关系
- angular - OpenLayer 将地图导出到 Image
- amazon-web-services - GO-AWS-SDK 访问 AWS 上的实例信息
- c - 无法使用 LINES 和 COLS 作为 ncurses 中的常量
- html - 如果仅添加样式,则 html 按钮焦点/轮廓的行为会有所不同,至少在 Chrome 83 中
- javascript - 如何将一组由空格分隔的参数更改为 Discord.js 中的一个参数?
- r - R Shiny“二进制运算符的非数字参数”错误