【问题标题】:How to port C# applications from windows for linux?如何从 Windows 为 linux 移植 C# 应用程序?
【发布时间】:2015-02-08 02:02:34
【问题描述】:

Windows.Forms 库包含许多有效阻止应用程序工作的错误。 WinForms Designer 无法将 WebBrowser 控件放在表单上。 NotifyIcon 类在 LXDE 下不起作用(参见 KeePass 的 bugtracker)。 Clipboard 类与Calculate Linux 的默认管理器不兼容。拖放在 DockPanelSuite 中存在问题。 WinForms Designer 因不透明问题而未完成。 WPF 从未实施过,也没有计划这样做。

Mono 团队说“我们不想开发 WinForms,因为这是旧技术。”

如何将桌面 C# 应用程序从 Windows 移植到 Linux?用Gtk#重写好像太难了……

什么更容易 - 修复 mono WinForms、实现 WPF 或将世界上所有应用程序重写为 Gtk#?

【问题讨论】:

标签: winforms mono porting


【解决方案1】:

正如您已经发现 Mono WinForms 实现只适用于非常简单的应用程序。查看 Xamarin 员工 Mike James 的 "Cross-Platform Desktop UIs" 博客文章,他总结了可用的解决方案:

  1. 传统方法
    Windows 上的WPFWinForms 前端,Linux 上的GTK# 前端和Mac OS X 上的Xamarin.Mac。IMO 这是最好的方法,它可能是如果您在应用中正确分离了业务层和表示层,这将比看起来更容易。
  2. XWT
    XWT 工具包使用相同的 API 并在所有平台上提供原生外观,但只实现了有限的组件子集。它对您的项目的可用性取决于您真正需要的组件。
  3. HTML 前端
    使用简单的 WebView 组件或 Awesomium HTML UI Engine 创建 HTML 前端。在某些情况下,这可能是一个可行的选择,但我不确定是否可以使用这种方法实现系统托盘图标。
  4. QTSHARP
    旨在为多平台 QT 工具包实现 .NET 绑定的开源项目。我从未尝试过,但根据项目网站,它似乎处于早期阶段,目前仅在 Windows 上进行测试。

顺便说一句,我目前正在为Pkcs11Admin 应用程序使用 WinForms,但我计划在任何受支持的平台上遇到阻止程序错误时立即使用传统方法。

【讨论】:

  • 感谢您提及 XWT。看起来很有趣
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-27
  • 1970-01-01
  • 2016-08-14
  • 2013-12-08
  • 1970-01-01
相关资源
最近更新 更多