Attualmente sto iniziando a creare un'applicazione che trarrebbe profitto dalla funzione asincrone del C# 5. Ma non sono sicuro di quale versione di VS e del runtime async utilizzare.Uso async-await su .net 4
Guardando ai grafici di popolarità del sistema operativo, avrò bisogno di supportare Windows XP per altri tre anni circa. Sembra che .net 4.5 venga eseguito solo sulle versioni più recenti di Windows, quindi ho bisogno di utilizzare .net 4.0. Le macchine di sviluppo usano Windows 7, quindi l'uso di una versione più recente di VS non è un problema.
Ora ho bisogno di scegliere prima un compilatore per fare questo:
- VS2010 con AsyncCTP
- VS2012 Preview (e ultima volta che arriva), impostando l'obiettivo di NET 4.0
- Mono (Sembra 2.12 ha async-await, preferisco/sono abituato a VS su MonoDevelop come IDE)
Quale ha meno bug di code-gen? Guardando a Jon Skeet's blog, l'anteprima VS2012 utilizza un generatore di codice mai usato rispetto al CTP.
E, ancora più importante, quale runtime utilizzare?
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 AsyncCTP. Ma dal momento che il CTP ha strane condizioni di licenza, non sembra una buona soluzione a lungo termine.
Oppure devo utilizzare un'implementazione di terze parti? Forse mono ne ha uno?
Per la distribuzione della libreria, preferisco semplicemente inserire la DLL nella stessa directory dell'applicazione, invece di una sorta 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 qualsiasi cosa sia mono (probabilmente 2.12), o consentire l'uso su sistemi operativi non Windows.
Non credo che riuscirai a ottenere una versione CTP in quanto non ti sarà permesso di ridistribuire tutto ciò che fa parte di un CTP con un'applicazione commerciale. Ci sono sicuramente bug in agguato e non è ancora ottimizzato per le prestazioni.Forse lo svilupperai più rapidamente, ma i tuoi clienti non saranno felici di installare un software beta che potrebbe interferire con le versioni finalmente rilasciate. –
@Alois Le versioni successive di AsyncCTP consentono la ridistribuzione. E la cosa peggiore che può succedere è la mia domanda si rompe. Non è come se potesse interferire con altre applicazioni, quindi non vedo capire il tuo concerto a causa di interferenze con la versione finale. Inoltre, parte della mia domanda è se ci sarà mai una versione finale che supporti WinXP in primo luogo. – CodesInChaos
La licenza indica chiaramente (Async CTP 3) "1.a.ii. l'utente accetta di cessare tale utilizzo immediatamente previa notifica da Microsoft;". Sospetto che questo avviso verrà dalla MS quando verrà rilasciato. Non sono un avvocato, ma sono sicuro che il tuo dipartimento legale (se ne possiedi uno) gradirebbe conoscere le tue motivazioni su come vuoi aggirare il problema senza rompere i termini della licenza. –