.NET 在 Linux 上:天壤之别

现代 .NET 已经成熟为一个强大的跨平台平台,许多开发者表示,如今在 Windows 和 Linux 上进行 C# 开发的体验几乎相同,尤其是在后端和 Web 工作方面。评论者强调了工具链的改进(带 C# Dev Kit 的 VS Code、JetBrains Rider、容器化工作流)以及 Unity 等重要采用驱动力,同时批评 Microsoft 在原生 GUI 框架和 Web UI(MAUI、Blazor)上的策略不一致,以及缺乏第一方 Linux 桌面支持。Avalonia 和 Uno 等第三方 UI 框架,以及对 Mono 和 Delphi 的回忆,都凸显出这个生态系统的大量创新其实发生在 Microsoft 自己的 UI 技术栈之外。

游戏开发中的 .NET

  • Unity 被描述为推动 C#/.NET 在“企业”场景之外采用的关键力量,尤其是在那些几乎不接触 Microsoft 工具链的开发者中。
  • Unity 受到批评,称其一直停留在旧版 Mono 分支上;有人指出,它正在持续努力迁移到现代 .NET 运行时,并且当前已支持 C# 9 和 .NET Standard 2.x。
  • IL2CPP 被广泛使用(尤其是在移动端/主机端),提升了性能和反作弊能力,但有评论者指出,由于元数据暴露,它实际上可能让 modding 更容易。
  • 诸如带有 C# 和 Visual Studio 调试的 Godot 等替代方案,则被强调受益于 Microsoft 的现代运行时和工具。

跨平台 GUI:MAUI、Avalonia、Uno、WPF

  • 多条评论将 Microsoft 的跨平台 GUI 叙事描述为长期以来薄弱或不稳定。
  • MAUI 是“最新”的官方方案,但受到批评:有漏洞、对桌面支持薄弱,而且明显缺少 Linux 支持;一些人将其视为对 Linux 作为一等公民的象征性轻视。
  • Avalonia 和 Uno 被反复推荐为事实上的跨平台 UI 框架,并且确实能在 Linux 上运行;Avalonia 常被赞为“远远领先于” MAUI。
  • 仍有人喜欢 WPF;Avalonia XPF(WPF-on-Linux/macOS)被提到很有吸引力。

Linux 上的 .NET 与工具链现状

  • 普遍认为 .NET 的跨平台运行时故事现在已经很强,尤其是从 .NET Core 3.1 之后以及 .NET 8 开始。
  • 带 C# Dev Kit 的 VS Code 被认为“够用”,但许多人认为 JetBrains Rider 在 Linux 和 macOS 上提供了明显更好、也更可扩展的 C# 体验。
  • Dev Kit 的许可方式(仅在类似社区场景下免费)被视为缺点。
  • 有些人觉得 Microsoft 故意限制 VS Code 的功能对等,以保持 Visual Studio 作为旗舰产品的地位。

Blazor 与 Web 技术栈定位

  • 对 Blazor 的评价褒贬不一:有人称它与 Next.js/Remix/Svelte 相比是个“灾难”;也有人说,Blazor Server 在某些“HTML over the wire”的特定场景中非常出色,因为不需要单独的 API 很有价值。
  • 有人担心缺乏有竞争力的 .NET Web 前端故事,正在把客户推向 JavaScript/TypeScript 技术栈,远离 IIS/Windows/SQL Server。

迁移与向后兼容性

  • 从 ASP.NET Framework 迁移到 ASP.NET Core 的经历分化明显:有人表示总体过渡相对顺利,只是某些库和 WCF 有问题;也有人将其描述为高度不平凡,存在重大 API 变化和缺失的框架(WebForms、更早的 OData、bundling)。
  • 一种观点认为,Microsoft 让大量遗留大型应用“走到死胡同”,迫使进行昂贵的重写,并相较于其历史上的向后兼容口碑削弱了信任。

WSL2、企业使用与开发者工作流

  • WSL2 被赞为让 Windows 变得可以忍受,并支持良好的 Linux 开发工作流(尤其搭配 VS Code 和 Docker),但也有几位指出企业环境经常禁止 WSL2,有时甚至禁止 Docker。
  • 一些开发者更偏好纯 Linux 上的 .NET,因为 CLI 工具更好,而且对 PowerShell 感到不适。

生态、许可与开源期望

  • 多条评论认为,非 Windows 平台上的 .NET 主要是由 Azure/云需求推动,而不是真正出于一流桌面平台的野心。
  • 有人将其与 Java 生态进行比较:免费且功能完整的 IDE(IntelliJ Community、Eclipse、NetBeans)对比 .NET 更商业化的工具,以及在 VS Code Dev Kit 中受限的“专业版”功能。
  • MAUI 缺少第一方 Linux GUI,与 Avalonia/Uno 等 FOSS 努力形成对比,这引出了 Linux 被当作“二等公民”的说法。另一些人反驳说,许多语言(Go、Java)也没有强大的官方 GUI,但并未遭受同样的批评。

Mono 的历史背景与怀旧情绪

  • 不少人回忆起 Mono 时代,那时在 Linux 上运行 .NET 还很新鲜且由社区驱动,并指出 Microsoft 和社区中的一些人最初反应都很负面。
  • 尽管当前技术上已有改进,但由于那段历史,一些社区的不信任和怀疑情绪仍然存在。