2013-03-15 17 views
5

Microsoft ha aggiornato il targeting asincrono/atteso per .net 4.0 e ora suggerisce di utilizzare la libreria Microsoft.Bcl.Async disponibile su nuget.Async Attendi il targeting dei requisiti di distribuzione 4.0

Nelle note di rilascio, si afferma che .net 4 con KB 2468871 è richiesto.

  1. KB2468871 è un requisito di costruzione o un requisito di implementazione?
  2. Quale aspetto di KB2468871 rende necessario?
+0

Direi che è un requisito di implementazione. Si noti che ASP.NET * richiede * .NET 4.5; il supporto per .NET 4.0 è solo per le app desktop. –

+0

@StephenCleary, sì questo è per un'applicazione desktop in cui il supporto XP è ancora un requisito. – Dan

+3

Dopo aver letto le note di rilascio, suppongo che sia necessario a causa di Feature 5: supporto per PCL. –

risposta

2

Citando http://support.microsoft.com/kb/2468871/en-us

Caratteristica 5 Modifiche al supporto librerie portatili. Queste modifiche includono aggiornamenti API e modifiche del raccoglitore. Questo aggiornamento consente al CLR di collegarsi correttamente alle librerie portatili in modo che una singola DLL possa essere eseguita su .NET Framework 4, su Silverlight, su Xbox o sul telefono Windows . Questo aggiornamento aggiunge API Silverlight pubbliche a .NET Framework 4 nella stessa posizione. Le firme API rimarranno coerenti sulla piattaforma. Tutte le modifiche sono compatibili al 100% e non infrangeranno alcun codice esistente.

Si scopre che senza questa kb installato Microsoft.Bcl si blocca (si tenta di associare a Silverlight System.Core biblioteca che non è presente sul sistema)

+0

Accettato poiché è stato pubblicato come risposta, ma Stephen Cleary ha già risposto a questa domanda nei commenti della domanda. – Dan

0

le note di rilascio dettaglio:

quando si mira una qualsiasi delle seguenti piattaforme (o versioni superiori):

• .NET Framework 4.0 (with KB2468871) 

Quindi, questo significa che si sta 'targeting' 4.0 con KB2468871 come in KB2468871 deve essere distribuito sul computer di destinazione affinché la libreria sia supportata.

Non sono disponibili dettagli su quali parti di KB2468871 sono necessari per Microsoft.Bcl.Async. Ti suggerisco di contattare il team BCL, postare sul blog o contattare i proprietari dei pacchetti Nuget per ulteriori dettagli. Sono chiaro cosa sapendo che parti del KB sono tenuti sarebbe fare la differenza ...

2

L'unico modo sicuro da usare async/attendono in .net 4.0 supportando gli utenti xp senza installare KB2468871 sta installando async CTP v3 in vs 2010 SP1, nuget microsoft bcl async e implementando i propri AsyncTaskMethodBuilder e AsyncVoidMethodBuilder. (e rimuovere async ctp dll reference)

È l'unico modo in cui qualsiasi implementazione asincrona CTP non asincrona in .net4, vs 2010, senza installazione vs 2012, net 4.5 o KB2468871 FUNZIONERÀ.

Qualsiasi altra implementazione pronta all'uso di async su .net4 utilizza il nuovo modo di implementare e collegare il codice asincrono all'interno del processo di compilazione, ecco perché è necessario installare CTP asincrono, è l'unica implementazione asincrona per .net4 , modificando il compilatore csc per supportarlo.

Microsoft ha modificato il tipo di utilizzo del compilatore in C# 5 e .net 4.5 per generare codice asincrono, in pratica potevano farlo facilmente per .net4, ma invece hanno scelto di forzare chiunque a installare vs 2012 e .net 4.5, qualcosa che è inaccettabile per le aziende che hanno bisogno di supportare gli utenti xp, perché non avrete modo di vedere e correggere eventuali bug .net 4 che sono stati risolti in .net 4.5.

Microsoft.Bcl.Async, AsyncTargetingPack, AsyncBridge non funzioneranno tutti senza .net 4.5 installato o KB2468871 per .net 4.0.

FUNZIONERANNO TUTTI se implementate AsyncTaskMethodBuilder e AsyncVoidMethodBuilder da soli, potete persino copiare/incollare l'implementazione da async ctp v3 con piccole modifiche e funzionerà.

Quindi, se si è davvero preoccupati dei requisiti di implementazione e di altre cose relative al supporto degli utenti di xp, vorrei consigliarvi di fare è quello che ho descritto.

+0

Grazie. postato le stesse risposte [qui] (http://stackoverflow.com/questions/16062590/async-ctp-not-working-in-vs-2010-sp1/16228189#16228189), [qui] (http: // stackoverflow.com/questions/16074401/asynchronous-programming-with-async-and-await/16097562#16097562) e [qui] (http://stackoverflow.com/questions/15338907/where-can-i-find-a -tpl-flusso di dati-versione-per-4-0/15.972.581 # 15.972.581). Tutto downvoted –