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



в настоящее время я начинаю создавать приложение, которое будет получать большую прибыль от функции асинхронного ожидания 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)


какой из них имеет меньше ошибок code-gen? Глядя на блог Джона Скита в VS2012 для предварительного просмотра используется не код-генератор, чем ГЦП.



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



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



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



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



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



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

748   5  

5 ответов:

Microsoft выпустила Async Targeting Pack (Microsoft.Bcl.Асинхронный) через Nuget как замена для AsyncCTP.

вы можете прочитать больше об этом здесь: http://blogs.msdn.com/b/bclteam/archive/2013/04/17/microsoft-bcl-async-is-now-stable.aspx.

вы можете прочитать о предыдущей версии здесь: http://blogs.msdn.com/b/lucian/archive/2012/04/24/async-targeting-pack.aspx.

Как это пакет официально поддерживается, теперь я считаю, что лучшим вариантом для таргетинга XP + async будет использование Visual Studio 2012 + C#5 + async Targeting Pack.

Если вы чувствуете необходимость в целевой .NET 3.5, хотя, вы все еще можете использовать (my)AsyncBridge для .NET 3.5.

Если вы открыты для рассмотрения других языков .Net, F# может решить вашу проблему. Он имеет асинхронное выражение вычисления{} в течение многих лет и обратно совместим даже с .Net 2.0. Минимальное требование-Windows XP SP3. Время выполнения можно загрузить здесь.

Если вы хотите иметь возможность распространять свое программное обеспечение, я думаю, что моно решение действительно ваш единственный вариант прямо сейчас. Вы также говорите, что хотите, чтобы конечный результат работал на Mono над Linux и OS X. таргетинг Mono для начала кажется естественным решением.

ваш следующий вопрос-это интегрированная среда разработки. Очевидно, что MonoDevelop будет работать хорошо, но вы говорите, что предпочитаете Visual Studio.

Грег Херлман создать профиль код против моно 2.8 от визуального Студия. Если вы последуете за ним, он может указать вам правильное направление для разработки против Mono 2.11/2.12 в Visual Studio.

конечно, есть и моно инструменты для Visual Studio, который является коммерческим продуктом. Я предполагаю, что он все еще предлагается Xamarin.

вы также можете запустить необходимые сборки профиля 4.5 из Mono поверх .NET, но я этого не пробовал. Профиль 4.5 является строгим супер-набор API 4.0. Может быть, дать ему шанс и доложить.

EDIT: похоже, что теперь вы можете использовать асинхронный CTP Visual Studio в производстве

вот что он говорит о страница скачать:

включает в себя новое лицензионное соглашение для производственного использования. Примечание - эта лицензия не делает составьте поощрение для вас, чтобы использовать CTP для вашего производства код. ОСАГО остается неподдерживаемым и используется на свой страх и риск Предварительный Просмотр Технологии. Тем не менее, мы получили много запросов от разработчики использовали CTP для производственного кода, и поэтому изменили лицензия, чтобы позволить это.

можно использовать бета-версию VS 12 для таргетинга .NET 4.0 с помощью async / await.

вам нужно скопировать некоторый код в ваш проект, который предоставляет типы, на которые опирается компилятор.

подробности здесь

Edit: мы взяли эту технику и превратили ее в библиотеку с открытым исходным кодом под названием AsyncBridge: https://nuget.org/packages/AsyncBridge

Если вы хотите начать распространять свое программное обеспечение после выпуска MS C# 5.0, то вы можете начать разработку с помощью AsycnCTP. В противном случае я бы не рекомендовал вам использовать его, так как это просто CTP, даже не бета. Он может быть изменен много близко к стадии бета-тестирования и к выпуску. Он может быть нестабильным, и т. д.

Если вы хотите ввести простые асинхронные операции в своем приложении, я бы рекомендовал вам использовать реактивные расширения и вещи, построенные сверху (реактивный пользовательский интерфейс и т. д.), Это просто красавица.

Что касается VS2012, он также содержит тот же асинхронный CTP, насколько я помню из моего //Build/ tablet MS, который дал мне на этой конференции.

Comments

    Ничего не найдено.