Je commence actuellement à créer une application qui bénéficierait beaucoup de la fonction d'attente asynchrone C# 5. Mais je ne suis pas sûr de la version de VS et de l'exécution asynchrone à utiliser.Utiliser async-await sur .net 4
En regardant les graphiques de popularité du système d'exploitation, je vais devoir supporter Windows XP pour encore trois ans. Il semble que .net 4.5 ne fonctionne que sur les nouvelles versions de Windows, je dois donc cibler .net 4.0. Les machines de développement utilisent Windows 7, donc l'utilisation d'une version plus récente de VS n'est pas un problème.
Maintenant je dois d'abord choisir un compilateur pour ce faire:
- VS2010 avec AsyncCTP
- VS2012 Aperçu (et dernière fois qu'il arrive), fixant l'objectif à 4,0 .net
- Mono (On dirait que 2.12 a async-attente, je préfère/suis utilisé pour VS sur MonoDevelop comme IDE)
Lequel a le moins de bogues de code-génération? En regardant Jon Skeet's blog, l'aperçu VS2012 utilise un générateur de code jamais que le CTP.
Et plus important quel runtime utiliser?
Est-ce que VS2012 contient une exécution asynchrone redistribuable pour une utilisation avec .net 4?
J'ai réussi à compiler du code, avec l'aperçu, en faisant référence à l'exécution AsyncCTP. Mais puisque le CTP a des conditions de licence étranges, cela ne semble pas être une bonne solution à long terme. Ou devrais-je utiliser une implémentation tierce? Peut-être que le mono en a un?
Pour la distribution de la bibliothèque, je préfère simplement placer la DLL dans le même répertoire que l'application, plutôt que dans un programme d'installation.
J'aimerais aussi que mes binaires fonctionnent sans modifications sur mono + Linux/MacOS. Ainsi, le runtime devrait être soit compatible avec tout ce qui est mono (2.12 probablement), soit permettre l'utilisation sur des systèmes d'exploitation non Windows.
Je ne pense pas que vous allez aller loin avec une version CTP car vous ne serez pas autorisé à redistribuer tout ce qui fait partie d'un CTP avec une application commerciale. Il y a sûrement des bugs qui traînent et il n'est pas encore optimisé pour la performance.Vous le développerez peut-être plus rapidement, mais vos clients ne seront pas heureux d'installer un logiciel bêta qui pourrait interférer avec les versions finales. –
@Alois Les versions ultérieures de l'AsyncCTP permettent la redistribution. Et la pire chose qui puisse arriver est la rupture de mon application. Ce n'est pas comme si cela pouvait interférer avec d'autres applications, donc je ne vois pas comment votre concert pourrait interférer avec la version finale. Une partie de ma question est également de savoir s'il y aura une version finale qui prendra en charge WinXP en premier lieu. – CodesInChaos
La licence stipule clairement (Async CTP 3) "1.a.ii vous acceptez de cesser immédiatement une telle utilisation sur avis de Microsoft;". Je soupçonne que cet avis proviendra de MS quand il sera publié. Je ne suis pas avocat mais je suis sûr que votre service juridique (si vous en avez un) aimerait entendre votre raisonnement comment vous voulez contourner cela sans enfreindre les termes de la licence. –