五个平台:

.NET Framework .NET Core Mono Unity Xamarin

两个标准:

.NET Standard XAML Standard

先说一下这两个标准:

.NET Standard顾名思义 .NET 标准,即 .NET 平台上的标准库,它统一了各平台的标准库实现。所有的 .NET 平台都会实现这个标准,也就是说这个标准里面定义的 API、数据类型 等等在实现了 .NET Standard 的平台中都是一致的,并且与平台无关,也就是说,.NET Standard 里面的东西是理论上可以运行在 Windows、Linux、MacOS、Android、iOS、Windows Phone 等上,无需做多少更改即可运行在各种系统上,实现代码重用,而具体能不能运行取决于这个实现了 .NET Standard 的平台能否运行在目标系统上。

XAML Standard。WPF 和 UWP 都采用了 XAML 语言编写 UI 界面,XAML Standard 就是一个统一各平台 UI 组件的标准。有了 XAML Standard,编写出来的 UI 代码,无需做多少更改即可以用于 Windows、Linux、MacOS、Android、iOS、Windows Phone 等上面,实现代码重用。

因此上面两个标准,就是 .NET 统一各平台,所有平台代码共享的第一步。

然后说一下这五个平台:

  • .NET Framework:最早的 .NET 平台,与 Windows 深度绑定。最新版本为 4.8,实现了 .NET Standard 2.0。
  • .NET Core:新生的官方跨平台 .NET,最新版本为 3.0,可以运行在各种架构的 Windows、Linux、MacOS 上面,真正的跨平台框架。
  • Mono:社区开发维护第三方 .NET 平台,可以运行在各种架构的 Windows、Linux、MacOS、Android、iOS 等上面,也是一个真正的跨平台框架。
  • Unity:基于 .NET 的游戏开发平台,衍生于 Mono,是目前主流的游戏开发平台,包括王者荣耀等等很多手机、电脑游戏都是在这个平台上开发的。
  • Xamarin:移动端 .NET 平台,衍生于 Mono,可以用于开发 Android、iOS、UWP 应用。

所有平台均支持使用 C#、VB.NET、F# 等语言,除此之外甚至还有 IronPython、IronRuby 等等。

平台对比和选择

平台最新版本最新实现的 .NET Standard 版本用途
.NET Framework4.82.0Windows 桌面开发、Web 开发、云、Windows 服务等
.NET Core3.02.1跨平台开发、Web 开发、微服务、云、机器学习、嵌入式开发等
Mono5.20.12.1移动端开发、跨平台开发、跨平台 Web 开发、微服务、云、机器学习等
Unity2019.22.1Windows 游戏开发、手机游戏开发
Xamarin(Xamarin.Forms)4.02.1手机 App 开发

主流开发工具对比选择

平台最新版本是否跨平台支持 .NET 平台出品公司
Visual Studio2019仅 Windows全部微软
Visual Studio Code1.32.3.NET Framework、.NET Core、Mono微软
Visual Studio For Mac2019仅 MacOS.NET Core、Mono、Xamarin微软
Rider2019.1全部JetBrains
Unity2019.2仅 Windows/MacOSMono、UnityUnity
MonoDevelop7.6Mono、.NET Core、Unity、XamarinMono