2009-04-22 11 views
5

Diciamo solo per la gioia di questo, decido che non voglio più scrivere applicazioni desktop in Java, ma voglio passare ad usare C#. Voglio essere in grado di creare un'applicazione che verrà eseguita su una distribuzione Linux mainstream e una recente versione di MS Windows. Avrà una componente GUI.Esiste una struttura GUI multipiattaforma per C# /. NET?

In Java, posso creare un'applicazione che utilizza Swing. Una volta che ho funzionato, posso copiare quel file jar da Windows a Linux o viceversa, a seconda di dove l'ho sviluppato. E generalmente funzionerà con java -jar myapp.jar.

In C# è possibile farlo? Esiste un equivalente funzionale a Swing o AWT in C#?

+1

Si può provare novembre: https://www.nevron.com/products-open-vision.aspx. È funzionalmente equivalente a Swing –

risposta

2

Si può provare WxWidgets. Ha il supporto per C#, tra molte altre lingue, ed è multipiattaforma. L'unico svantaggio è una ricompensa per ogni piattaforma. In alternativa puoi provare Mono, che è molto buono, ma attenzione ci sono un paio di ostacoli con problemi di compatibilità. Non esiste un file "run anywhere" predefinito per le app C#, ma come Java ha con i jar, tuttavia, è meglio ricompilare per ciascuna piattaforma se si desidera garantire la compatibilità.

2

La cosa più vicina che abbia mai visto è mono - anche se non supporta ancora credo che tutte le librerie CLR, ma è cross-platform.

5

Credo che una buona parte di WinForms sia implementata in Mono. È necessario installare Mono sotto Linux per questo. Potresti avere problemi di compatibilità, dal momento che Mono non è uno sforzo di Microsoft e non è ufficialmente supportato da loro.

+3

Sì, ma è uno sforzo * molto * della community, e ho visto solo problemi di compatibilità quando stavo facendo qualcosa di completamente ridicolo (i commenti sono troppo brevi per descrivere: D). La normale programmazione desktop di solito va bene. –

+0

@ person-b, concordo, è un ottimo sforzo della community :-) –

+2

Per quanto ne so, è implementato WinForms 2.0. –

13

Probabilmente GTK# sarebbe il più vicino.

So che altri hanno detto mono, ma non è giusto. .Net è mono come Microsoft Java VM è di Java runtime di Sun. mono non si trova proprio nello stesso spazio concettuale di Swing. Per questo, GTK # è una corrispondenza più stretta.

+2

So cosa stai dicendo, nella sua domanda ha chiesto di AWT o Swing - ma quello che penso che stia davvero chiedendo è "come posso scrivere app C# multipiattaforma?". –

5

This page ha una lista dei toolkit grafici supportati da Mono, tra pro e contro per ciascuno di essi. Come altri hanno suggerito, WinForms, GTK # e wxNet sono tutte opzioni praticabili.

0

Windows.Forms è la libreria standard per lo sviluppo di applicazioni GUI per .NET

Nonostante di essere molto ben supportato su Windows, versione 2.0 è pienamente implementata da Mono troppo, che lo rende disponibile su tutte le piattaforme supportate da Mono .

WPF d'altra parte è concettualmente una nuova libreria, per ora è completamente supportata principalmente su Windows solo e solo un sottoinsieme di esso supportato da Mono dalla loro implementazione Silverlight - Moonlight.

Se si crea domanda di produttivo utilizzo cross-platform e/o avere vincoli di prestazioni conservatori vanno Windows Form.

Se si vuole sperimentare e imparare qualcosa di nuovo o se si sta sviluppando nuova applicazione per Windows andare WPF. Questa è la nuova tecnologia per le applicazioni GUI client.

+0

Mono non può eseguire Windows.Forms su Linus o Mac poiché Windows.Forms dipende dalle chiamate API Win32. –

16

C'è Eto.Forms (su GitHub), che è un livello di astrazione in cima WPF, WinForms, GTK, e MonoMac/Cocoa - in modo da poter ottenere un'interfaccia utente nativa su tutte le piattaforme, senza dover reimplementare per ogni piattaforma.Non devi soffrire del minimo comune denominatore, dal momento che puoi implementare specifiche per ciascuna piattaforma (se lo desideri, ma non è necessario).

Ha un vantaggio che è puro .NET e si basa solo su dipendenze fornite dal sistema operativo, a differenza dell'utilizzo di GTK o WxWidgets in cui è necessario raggruppare i binari nativi per varie piattaforme.

+0

Ciao! Posso usare Eto.Forms con Gtk # su Windows? Grazie! –

+0

@ user2656632 sì, certo che puoi. Basta passare la piattaforma appropriata al costruttore Eto.Forms.Application. (; – Curtis

2

Per iOS, Android e Windows Mobile, c'è Xamarin.Forms. http://xamarin.com/forms Questo è un livello di astrazione che consente di scrivere codice multipiattaforma, che si lega ai toolkit nativi della GUI sotto il cofano.

Sto cercando più soluzioni come questo - mi interessa non solo su piattaforme mobili, ma anche piattaforme desktop (Windows, Mac OSX, Fedora/Ubuntu/etc Linux)

3

Questa è una domanda più vecchio, ma come un aggiornamento, una combinazione di Mono e Xamarin dovrebbe funzionare per le vostre moderne esigenze multipiattaforma.

http://www.mono-project.com/docs/gui/winforms/

Microsoft ha appena .NET open-source e sta commettendo a portare il nucleo .NET per Linux e MacOS con la loro prossima versione. Microsoft ha anche stretto una stretta collaborazione con Mono e Xamarin, in particolare per aiutare con le loro librerie Android e Linux.

http://www.hanselman.com/blog/AnnouncingNET2015NETAsOpenSourceNETOnMacAndLinuxAndVisualStudioCommunity.aspx

Problemi correlati