Использование async-await в .net 4

В настоящее время я начинаю создавать приложение, которое получило бы много пользы от функции async-await в C # 5. Но я не уверен, какую версию VS и асинхронной среды выполнения использовать.

Глядя на диаграммы популярности ОС, мне нужно будет поддерживать Windows XP еще три года или около того. Похоже, что .net 4.5 работает только в более новых версиях Windows, поэтому мне нужно настроить таргетинг на .net 4.0. На машинах для разработки используется Windows 7, поэтому использование более новой версии VS не проблема.

Теперь мне нужно сначала выбрать компилятор для этого:

  • VS2010 с AsyncCTP
  • VS2012 Preview (и последний, как только он появится), установив цель на .net 4.0
  • Mono (похоже, 2.12 имеет async-await, я предпочитаю / использую VS, а не MonoDevelop в качестве IDE)

В какой из них меньше ошибок генерации кода? Глядя на блог Джона Скита , VS2012 Preview никогда не использует генератор кода, чем CTP.

И что еще более важно, какую среду выполнения использовать?

Содержит ли VS2012 распространяемую асинхронную среду выполнения для использования с .net 4?

Мне удалось скомпилировать код с предварительным просмотром, обратившись к среде выполнения AsyncCTP. Но поскольку у CTP странные условия лицензирования, это не похоже на хорошее долгосрочное решение.

Или мне следует использовать стороннюю реализацию? Может быть, у mono он есть?

Для распространения библиотеки я предпочитаю просто поместить dll в тот же каталог, что и приложение, а не какой-то установщик.

Я бы также хотел, чтобы мои двоичные файлы работали без изменений на моно + Linux / MacOS. Таким образом, среда выполнения должна быть совместима с любым встроенным моно (вероятно, 2.12) или разрешать использование в операционных системах, отличных от Windows.

137
задан CodesInChaos 7 February 2012 в 10:59
поделиться