Async Ожидание таргетинга на требования к развертыванию 4.0

Microsoft обновила таргетинг async/wait для .net 4.0 и теперь предлагает использовать библиотеку Microsoft.Bcl.Async, доступную на nuget.

В примечаниях к выпуску указано, что требуется .net 4 с KB 2468871.

  • Требуется ли KB2468871 требование сборки или требование развертывания?
  • Какой аспект KB2468871 делает необходимым?

Ответ 1

Цитата из http://support.microsoft.com/kb/2468871/en-us

Функция 5 Изменения в поддерживаемых портативных библиотеках. Эти изменения включают обновления API и модификации связующего. Это обновление позволяет CLR, чтобы успешно связываться с портативными библиотеками, чтобы одна DLL может работать на .NET Framework 4, на Silverlight, на Xbox или на Windows Phone. Это обновление добавляет общедоступные API Silverlight к .NET. Framework 4 в том же месте. Подписи API останутся согласованный по всей платформе. Все модификации 100% совместим и не будет нарушать существующий код.

Оказывается, без этого kb установлена ​​ошибка Microsoft.Bcl(она пытается привязать к Silverlight System.Core библиотеке, которая не находится в системе)

Ответ 2

Единственный безопасный способ использования async/await в .net 4.0, поддерживающий пользователей xp без установки KB2468871, - это установка async CTP v3 в vs 2010 SP1, nuget microsoft bcl async и реализация собственных AsyncTaskMethodBuilder и AsyncVoidMethodBuilder. (и удалите ссылку async ctp dll)

Это единственный способ реализации асинхронной асинхронной асинхронной CTP в .net4, vs 2010, без установки vs 2012, net 4.5 или KB2468871 WILL WORK.

В любой другой готовой к использованию реализации async на .net4 там используется новый способ реализации и переадресации асинхронного кода в процессе компиляции, поэтому вам необходимо установить async CTP, это единственная реализация async для .net4, модифицируя компилятор csc для его поддержки.

Microsoft изменила использование компилятора типов в С# 5 и .net 4.5 для генерации асинхронного кода, в основном они могли бы легко сделать это .net4, но вместо этого они решили заставить любого установить vs 2012 и .net 4.5, что-то что неприемлемо для компаний, которым необходимо поддерживать пользователей xp, потому что у вас не будет возможности увидеть и исправить ошибки .net 4, которые были исправлены в .net 4.5.

Microsoft.Bcl.Async, AsyncTargetingPack, AsyncBridge, все они НЕ РАБОТАЮТ без установленного .net 4.5 или KB2468871 для .net 4.0.

Они ВСЕ РАБОТАЮТ, если вы внедрили AsyncTaskMethodBuilder и AsyncVoidMethodBuilder самостоятельно, вы даже можете скопировать/вставить его реализацию из async ctp v3 с небольшими изменениями, и это будет просто работать.

Итак, если вы действительно обеспокоены требованием к развертыванию и другими вещами, связанными с поддержкой пользователей xp, я бы настоятельно рекомендовал это сделать, я описал.

Ответ 3

Подробные сведения о выпуске:

при ориентации на любую из следующих платформ (или более высоких версий):

• .NET Framework 4.0 (with KB2468871)

Итак, это означает, что вы нацеливаетесь на 4.0 w/KB2468871, как в KB2468871, должны быть развернуты на целевом компьютере для поддержки библиотеки.

Нет подробностей о том, какие части KB2468871 необходимы для Microsoft.Bcl.Async. Я предлагаю вам связаться с командой BCL, опубликовать в блоге или связаться с владельцами пакетов Nuget для получения более подробной информации. Я не понимаю, что знание того, какие части KB необходимы, будет иметь значение...