2015-02-08 13 views
5

La libreria Windows.Forms contiene molti bug che impediscono efficacemente alle applicazioni di funzionare. WinForms Designer non è in grado di inserire il controllo WebBrowser sul modulo. La classe NotifyIcon non funziona con LXDE (vedi il bugtracker di KeePass). La classe degli Appunti non è compatibile con il gestore predefinito di Calcola Linux. Drag and Drop ha problemi in DockPanelSuite. WinForms Designer non è terminato a causa di problemi di opacità. WPF non è mai stato implementato e non ha intenzione di farlo.Come eseguire il porting di applicazioni C# da windows per linux?

E il team mono dice "non vogliamo sviluppare WinForms, perché questa è tecnologia obsoleta".

In che modo deve essere utilizzata una sola applicazione desktop C# da Windows a Linux? Riscrivendolo con Gtk # sembra troppo difficile ...

Che cosa è più facile - riparare i singoli WinForms, implementare WPF o riscrivere tutte le applicazioni del mondo in Gtk #?

+0

Vedere https://github.com/picoe/Eto e https://github.com/picoe/Eto –

risposta

5

Come hai già scoperto l'implementazione di Mono WinForms è adatta solo per applicazioni molto semplici. Date un'occhiata a "Cross-Platform Desktop UIs" post sul blog da Xamarin dipendente Mike James che riassume le soluzioni disponibili:

  1. approccio tradizionale
    WPF o WinForms frontend su Windows, GTK# frontend su Linux e Xamarin.Mac su Mac OS X. Si tratta di IMO il modo migliore per andare e potrebbe essere più facile di quanto sembri se hai correttamente separato i livelli di business e di presentazione nella tua app.
  2. XWT
    XWT toolkit utilizza la stessa API e fornisce aspetto nativo su tutte le piattaforme, ma solo è implementato un sottoinsieme limitato di componenti. La sua usabilità per i tuoi progetti dipende da quali componenti hai veramente bisogno.
  3. HTML frontend
    Creare un frontend HTML utilizzando il componente WebView semplice o Awesomium HTML UI Engine. Questa potrebbe essere una valida opzione in alcuni casi, ma non sono sicuro se sia possibile implementare le icone di systray con questo approccio.
  4. QTSHARP
    progetto open source che mira ad attuare attacchi .NET per multipiattaforma QT toolkit. Non l'ho mai provato, ma secondo il sito web del progetto sembra essere in fase iniziale e attualmente testato solo su Windows.

BTW Attualmente sto usando WinForms per l'applicazione Pkcs11Admin ma ho intenzione di utilizzare l'approccio tradizionale non appena avrò colpito un bug di blocco su una qualsiasi delle piattaforme supportate.