В настоящее время я начинаю создавать приложение, которое получило бы много пользы от функции async-await в C # 5. Но я не уверен, какую версию VS и асинхронной среды выполнения использовать.
Если посмотреть на графики популярности ОС, мне нужно будет поддерживать Windows XP еще около трех лет. Похоже, что .net 4.5 работает только в более новых версиях Windows, поэтому мне нужно настроить таргетинг на .net 4.0. На машинах для разработки используется Windows 7, поэтому использование более новой версии VS не проблема.
Теперь мне нужно сначала выбрать компилятор для этого:
- VS2010 с AsyncCTP
- Предварительный просмотр VS2012 (и окончательный, когда он появится), установив цель на .net 4.0
- Mono (похоже, что 2.12 имеет async-await, я предпочитаю / использую VS, а не MonoDevelop как IDE)
У какого из них меньше ошибок генерации кода? Глядя на блог Джона Скита, в VS2012 Preview никогда не используется генератор кода, чем CTP.
И что еще более важно, какую среду выполнения использовать?
Содержит ли VS2012 распространяемую асинхронную среду выполнения для использования с .net 4?
Мне удалось скомпилировать код с предварительным просмотром, обратившись к среде выполнения AsyncCTP. Но поскольку у CTP странные условия лицензирования, это не похоже на хорошее долгосрочное решение.
Или мне следует использовать стороннюю реализацию? Может, у моно есть?
Для распространения библиотеки я предпочитаю просто поместить dll в тот же каталог, что и приложение, а не какой-то установщик.
Также хотелось бы, чтобы мои двоичные файлы работали без изменений на моно + Linux / MacOS. Таким образом, среда выполнения должна быть совместима с любым встроенным моно (вероятно, 2.12) или разрешать использование в операционных системах, отличных от Windows.