可以为 Windows、具有相同源代码的 MacOS 构建 xamarin 应用程序吗?

Can xamarin apps be built for Windows, MacOS with same source code?

给定一个用 C# 为 Xamarin 编写的应用程序,它是否可以在所有支持的平台上以 运行 构建并进行最小的更改,包括 Android、iOS、MacOS,Windows?

我知道 Xamarin 声称 90% 的代码可以跨平台共享(10% 需要定制),我指的是“90%”。

我不明白的是这 90% 是否可以在不同的 Xamarin 工具之间共享,例如Xamarin.Forms 和 Xamarin.Mac 或者如果它们是具有不同 API 的完全不同的工具,等等

例如,我看到使用 Xamarin.Forms 我可以为 iOS、Android 和 Windows 构建。但不是 MacOS。那么,在 Mac 上,我可以安装 Xamarin.Mac 然后为 MacOS 构建相同的应用程序吗?

Xamarin.Forms 是允许您在 Android、iOS 和 UWP 之间创建跨平台应用程序的框架。根据我的经验,Xamarin.Forms 的许多功能不会转移到 Xamarin.Android。事实上,UI Xamarin.Forms 的大部分工作方式不会转移到 Xamarin.iOS 和 Xamarin.Android。大多数时候,当我找到在 Xamarin.Forms 中有效的解决方案并尝试在 Xamarin.Android 中做同样的事情时,我最终只是从头开始在 Xamarin.Android 中自己解决问题。

当他们说 90% 是共享时,他们的意思是在 Xamarin.Forms... 90% 的模型和代码背后的工作可以在项目之间共享(在 Xamarin.Forms 解决方案)和 10% 必须为每个平台定制(UWP,Android,iOS)

编辑:只是为了将来澄清,您需要一个 iOS 设备或​​一个 iOS 虚拟机来编译 iOS

上的代码

To build Xamarin.iOS apps with Visual Studio 2019 on Windows, you will need:

A Windows machine with Visual Studio 2019 installed. 

This can be a physical or a virtual machine. Windows system requirements

A network-accessible Mac set up with Apple's build tools and Xamarin.iOS.

Visual Studio 2019 accesses this machine over a network connection to use Apple's build tools, which are required for compiling native iOS applications. Mac system requirements

来源:https://docs.microsoft.com/en-us/xamarin/ios/get-started/installation/windows/?pivots=windows

您可以为基于 Xamarin.Forms 的 UI 添加一个 MacOS 目标,当然,这是通过 Visual Studio 为 Mac:

Forms 中的某些项目在 MacOS 上功能不完整,因此它仍在 "Preview" 版本中,这些项目列在 "Platform Support macOS Status"维基:

只要您使用 .Net 代码和 Xamarin.Forms,每个项目都是 100% portable/sharable。 Xamarin.Forms 目前处于 macOS 和 Windows WPF 的测试版(但对于 UWP,它不是测试版),特别是对于 macOS,它们没有真正的原生外观。

Xamarin 确实支持使用本机接口和本机 API,但无论何时这样做,它都是不可移植的。

所以没有 90% 可以共享,这可能是对某些情况的一些估计。它可以是 100% 可共享的,也可以是仅 10% 可共享的,具体取决于您的项目以及您对可共享 API 的坚持程度。