2015-02-08 14 views
5

Biblioteka Windows.Forms zawiera wiele błędów, które skutecznie uniemożliwiają działanie aplikacji. WinForms Designer nie może umieścić formantu WebBrowser w formularzu. Klasa NotifyIcon nie działa w LXDE (zobacz bugtracker w KeePass). Klasa schowka jest niekompatybilna z domyślnym menedżerem narzędzia Calculate Linux. Przeciąganie i upuszczanie powoduje problemy w DockPanelSuite. Projekt WinForms nie został ukończony z powodu problemów z kryciem. WPF nigdy nie zostało wdrożone i nie ma planów, aby to zrobić.Jak przenieść aplikacje C# z Windowsa na Linux?

Jeden zespół mówi: "nie chcemy tworzyć WinForm, ponieważ jest to stara technologia".

W jaki sposób powinien być jeden port dla aplikacji C# z Windows na Linux? Przepisanie go za pomocą Gtk # wydaje się zbyt trudne ...

Co jest łatwiejsze - naprawić mono WinForm, zaimplementować WPF lub przepisać wszystkie aplikacje na świecie na Gtk #?

+0

Zobacz https://github.com/picoe/Eto i https://github.com/picoe/Eto –

Odpowiedz

5

Jak już wiesz, implementacja Mono WinForm jest odpowiednia tylko dla bardzo prostych aplikacji. Spójrz na "Cross-Platform Desktop UIs" blogu z Xamarin pracowników Mike James, który podsumowuje dostępne rozwiązania:

  1. Tradycyjne podejście
    WPF lub WinForms nakładka na Windows, GTK# nakładka na Linux i Xamarin.Mac na Mac OS X. IMO tego jest najlepszy sposób na to, co może być łatwiejsze, niż wygląda, jeśli poprawnie rozdzieliłeś warstwy biznesowe i prezentacyjne w swojej aplikacji.
  2. XWT
    XWT Toolkit używa tego samego API i zapewnia natywną patrzeć na wszystkich platformach, ale jest realizowany tylko ograniczony podzbiór elementów. Jego użyteczność dla twoich projektów zależy od komponentów, których naprawdę potrzebujesz.
  3. Interfejs HTML
    Utwórz frontend HTML za pomocą prostego składnika WebView lub Awesomium HTML UI Engine. W niektórych przypadkach może to być opłacalna opcja, ale nie jestem pewien, czy za pomocą tego podejścia można zaimplementować ikony systray.
  4. QTSHARP
    projekt open source, które ma na celu wdrożenie powiązania NET wieloplatformową QT Toolkit. Nigdy tego nie próbowałem, ale według strony internetowej projektu wydaje się, że jest na wczesnym etapie i obecnie testowany tylko w systemie Windows.

BTW Obecnie używam aplikacji WinForm dla aplikacji Pkcs11Admin, ale zamierzam użyć tradycyjnego podejścia, gdy tylko kliknę przycisk blokady na dowolnej obsługiwanej platformie.