Hai letto di Mono.NET su http://www.mono-project.com?
Ti consente di scrivere app .NET per Linux con piccole differenze rispetto all'implementazione Microsoft. Non credo che wine possa far fronte a nessuno dei componenti .NET.
Basta leggere prima la documentazione e il gioco è fatto.
PS:questo ti dà anche l'elenco di compatibilità tra mono e .NET. http://www.mono-project.com/Compatibility e MoMA (mono migration Analyzer) è uno strumento che analizzerà qualsiasi app .NET già creata per vedere se è compatibile per la distribuzione su Linux.
In questo post ho accorciato e combinato tutte le informazioni che ho appreso da altri in questo thread.
-
L'implementazione open source di .NET per Linux si chiama Mono .
-
La compatibilità è ben documentata (vedi link sotto). Mono supporta LINQ, threading e alcune altre funzioni complicate.
-
Supporta anche InteropServices. È possibile utilizzare DllImport sulla libreria linux (!), come
libc.so
per esempio. -
Mono può supportare Android e iOS (sono basati su Linux, giusto?)
-
Esiste uno strumento per l'analisi della compatibilità Mono chiamato MoMA (Mono Migration Analyzer)
Lo strumento Mono Migration Analyzer (MoMA) ti aiuta a identificare i problemi che potresti riscontrare durante il porting della tua applicazione .Net su Mono. Aiuta a individuare le chiamate specifiche della piattaforma (P/Invoke) e le aree che non sono ancora supportate dal progetto Mono.
Link utili:
Mono - home page
Mono - pagina con documentazione
Mono - pagina di compatibilità
MoMA - Pagina Mono Migration Analysis
Abbiamo un paio di applicazioni .net che girano su Windows o Linux con Mono.
Puoi sviluppare in VisualStudio se vuoi, non è necessario utilizzare l'ambiente di sviluppo Mono. Per eseguire le applicazioni .net su Linux sono necessarie solo le librerie runtime mono.
Usiamo net 2.0 target per compilare queste app in VisualStudio, perché mono è compatibile quasi al 100% con .net 2.0. Mono implementa anche le API delle versioni successive di .net, ma non tutte e non così complete. Se utilizzi funzionalità di versioni più recenti della 2.0, dovresti verificare se sono supportate o utilizzare lo strumento di analisi della compatibilità Mono. Puoi anche usare lo sviluppo Mono invece di Visual Studio, il mio predecessore lo stava facendo; il risultato è praticamente lo stesso e preferisco invece utilizzare Visual Studio.
Non abbiamo riscontrato problemi di rilievo e le app sono relativamente complesse, fortemente multithread, I/O asincrono, WinForms, socket, porte seriali, ecc.
Alcune app utilizzavano librerie .net che non sono disponibili in MS .net, ma tutte queste possono essere installate anche su Windows in modo che non ci siano problemi nell'eseguire queste app in Windows.
Spero di esserti stato d'aiuto,