2013-03-15 16 views
5

Firma Microsoft zaktualizowała asynchroniczne/oczekujące kierowanie dla .net 4.0, a teraz sugeruje użycie biblioteki Microsoft.Bcl.Async dostępnej pod adresem nuget.Async AWAit targeting 4.0 wymagania wdrażania

W informacjach o wersji stwierdza, że ​​.net 4 z KB 2468871 jest wymagany.

  1. Czy KB2468871 wymaga wymagania kompilacji lub wdrożenia?
  2. Jaki aspekt KB2468871 wymaga?
+0

Zgaduję, że to wymóg wdrożenia. Zauważ, że ASP.NET * wymaga * .NET 4.5; Obsługa .NET 4.0 jest przeznaczona tylko dla aplikacji komputerowych. –

+0

@StephenCleary, tak jest w przypadku aplikacji na komputer, gdzie obsługa XP jest nadal wymagana. – Dan

+3

Po przeczytaniu uwag do wydania, zgaduję, że jest to konieczne z powodu cechy 5: obsługa PCL. –

Odpowiedz

2

Cytując http://support.microsoft.com/kb/2468871/en-us

Feature 5 wymian na wsparcie bibliotek przenośnych. Te zmiany: obejmują aktualizacje interfejsu API i modyfikacje segregatorów. Ta aktualizacja umożliwia bibliotece CLR nawiązanie połączenia z bibliotekami przenośnymi, dzięki czemu pojedyncza biblioteka DLL może działać w systemie .NET Framework 4, na platformie Silverlight, na konsoli Xbox lub na telefonie z systemem Windows Phone w wersji . Ta aktualizacja dodaje publiczne interfejsy API Silverlight do .NET Framework 4 w tej samej lokalizacji. Sygnatury API pozostaną niezmienione na poziomie całej platformy. Wszystkie modyfikacje są w 100% kompatybilne i nie będą łamały żadnego istniejącego kodu.

Okazuje się, że nie zainstalowano ten WK Microsoft.Bcl awarii (stara się wiązać Silverlight System.Core biblioteki, która nie znajduje się w systemie)

+0

Zaakceptowany, ponieważ został wysłany jako odpowiedź, ale Stephen Cleary odpowiedział na to już w komentarzach do pytania. – Dan

0

Uwolnienie zauważa szczegół:

podczas kierowania jedną z następujących platform (lub nowszej wersji):

• .NET Framework 4.0 (with KB2468871) 

Tak, to znaczy, że 'kierowanie' 4.0 w/KB2468871 jak w KB2468871 musi zostać wdrożona na komputerze docelowym, aby biblioteka była obsługiwana.

Brak szczegółowych informacji na temat części KB2468871 wymaganych w Microsoft.Bcl.Async. Proponuję skontaktować się z zespołem BCL, opublikować na blogu lub skontaktować się z właścicielami pakietów Nuget po więcej szczegółów. Jestem jasne, co Wiedząc, które części KB są wymagane by coś zmienić ...

2

Jedynym bezpiecznym sposobem użycia asynchroniczny/czekają .net 4.0 obsługujący użytkowników XP bez instalowania KB2468871 instaluje asynchroniczny CTP v3 w porównaniu do 2010 SP1, nuget microsoft bcl async i implementując własne AsyncTaskMethodBuilder i AsyncVoidMethodBuilder. (i usuń odniesienie async ctp dll)

Jest to jedyny sposób implementacji asynchronicznej CTP nie asynchronizowanej w .net4, w porównaniu z 2010, bez instalacji vs 2012, netto 4.5 lub KB2468871 BUDOWAĆ.

Jakakolwiek inna gotowa do użycia implementacja asynchronizacji na .net4 tam wykorzystuje nowy sposób implementacji i mostkowania kodu asynchronicznego w procesie kompilacji, dlatego musisz zainstalować asynchroniczny CTP, jest to jedyna implementacja asynchroniczna dla .net4 , modyfikując kompilator csc, aby go obsłużyć.

Firma Microsoft zmieniła typ użycia kompilatora w C# 5 i .net 4.5, aby wygenerować kod asynchroniczny, zasadniczo może to zrobić z łatwością dla .net4, ale zamiast tego zdecyduje zmusić kogokolwiek do zainstalowania vs 2012 i .net 4.5, coś, co jest niedopuszczalne dla firm, które muszą obsługiwać użytkowników XP, ponieważ nie będziesz w stanie zobaczyć i naprawić żadnych błędów .net 4, które zostały naprawione w .net 4.5.

Microsoft.Bcl.Async, AsyncTargetingPack, AsyncBridge one wszystkie NIE BĘDĄ działać bez zainstalowanego .net 4.5 lub KB2468871 dla .net 4.0.

ZOSTANĄ CAŁKOWITA PRACA, jeśli zaimplementujesz AsyncTaskMethodBuilder i AsyncVoidMethodBuilder na własną rękę, możesz nawet skopiować/wkleić jego implementację z async ctp v3 z drobnymi zmianami i to po prostu zadziała.

Jeśli naprawdę zależy ci na wymaganiach związanych z wdrażaniem i innych sprawach związanych z obsługą użytkowników XP, zdecydowanie radzę zrobić to, co opisałem.

+0

Dzięki. opublikował te same moje odpowiedzi [tutaj] (http://stackoverflow.com/questions/16062590/async-ctp-not-working-in-vs-2010-sp1/16228189#16228189), [tutaj] (http: // stackoverflow.com/questions/16074401/asynchronous-programming-with-async-and-await/16097562#16097562) i [tutaj] (http://stackoverflow.com/questions/15338907/where-can-i-find-a -tpl-dataflow-wersja-for-4-0/15972581 # 15972581). Wszystkie zostały odrzucone –