← 博客

2026年7月21日 · 4 分钟阅读

Majorsilence.Forms 简介

本页为译文。如与英文版有出入,以英文版为准。 English

要把一个 WinForms 应用从仅限 Windows 的桌面环境中迁出,传统做法意味着从头重写:XAML、被迫改成 MVVM 结构, 或者转向 Web。这样做成本高、风险大,而且会丢掉多年积累下来、运转良好的业务逻辑和用户体验——而这套代码 往往只是需要换一层新外观而已。

Majorsilence.Forms 采取了不同的思路:它镜像 WinForms 的 API 表面——Form、控件、事件处理程序, 甚至 *.Designer.cs 代码隐藏文件——并提供一个兼容层,让现有的窗体和控件以小得多的改动迁移过来。 编程模型不变;改变的只是它运行的地方。

它是如何构建的

每个控件都通过 SkiaSharp 绘制到一个 SKSurface 上, 下面是一个可替换的宿主后端:

核心程序集 Majorsilence.Forms 完全不引用任何窗口工具包——只引用 SkiaSharp。各个后端是独立的程序集, 通过两个小接口 IPlatformBackend 和 IWindowBackend 接入。正是这条接缝(seam)让完全相同的应用今天可以 面向 Avalonia、明天面向 Uno,而应用代码无需任何改动。详见平台后端。

它适合谁

如果你手上有一套目前仅限 Windows 的 WinForms 代码库,又想保持前进的势头——复用你的控件、团队的既有 习惯和业务逻辑——而不是开启一场持续多年的重写,那么它就是为你而设计的。

这个项目仍处于早期阶段:API 正在趋于稳定,WinForms 的每个角落尚未全部覆盖。它已经很适合用于新的跨平台 业务(LOB)应用,如果锁定版本,也可以用于迁移真实的生产应用。请查看 兼容性矩阵,了解目前哪些已实现、哪些还是存根。

试一试

dotnet new --install MajorsilenceForms.Templates
dotnet new majorsilenceforms
dotnet run

或者直接研究一个真实的应用——samples/Explorer 是一个完整的 Windows 资源管理器克隆,samples/Outlaw 是一个 Outlook 克隆,两者都在同一套控件上跨平台原样运行,无需修改。

参阅快速上手来搭建你的第一个应用。