Al momento sto iniziando a creare un'applicazione che trarrebbe molto profitto dalla funzionalità asincrona di C # 5. Ma non sono sicuro di quale versione di VS e del runtime asincrono utilizzare.
Guardando i grafici di popolarità del sistema operativo, dovrò supportare Windows XP per altri tre anni circa. Sembra che .net 4.5 funzioni solo su versioni più recenti di Windows, quindi devo scegliere come target .net 4.0. Le macchine di sviluppo utilizzano Windows 7, quindi l'utilizzo di una versione più recente di VS non è un problema.
Ora devo prima scegliere un compilatore per fare questo:
- VS2010 con AsyncCTP
- Anteprima VS2012 (e finale una volta arrivato), impostando la destinazione su .net 4.0
- Mono (sembra che 2.12 abbia async-waitit, preferisco / sono abituato a VS su MonoDevelop come IDE)
Quale ha meno bug di code-gen? Guardando il blog di Jon Skeet, l'anteprima di VS2012 utilizza un generatore di codice mai rispetto al CTP.
E ancora più importante quale runtime usare?
VS2012 contiene un runtime asincrono ridistribuibile per l'uso con .net 4?
Sono riuscito a compilare il codice, con l'anteprima, facendo riferimento al runtime di AsyncCTP. Ma dal momento che il CTP ha strane condizioni di licenza, questa non sembra una buona soluzione a lungo termine.
O dovrei usare un'implementazione di terze parti? Forse mono ne ha uno?
Per distribuire la libreria preferisco semplicemente mettere la dll nella stessa directory dell'applicazione, anziché un qualche tipo di programma di installazione.
Mi piacerebbe anche se i miei binari funzionassero senza modifiche su mono + Linux / MacOS. Quindi il runtime dovrebbe essere compatibile con qualunque cosa mono (probabilmente 2.12) abbia incorporato, o consentire l'uso su sistemi operativi non Windows.