6

Sto tentando di riscrivere un progetto in una libreria di classi portatile. Ma il problema è che sta usando Async CTP e non riesco a compilarlo come libreria per WP e Windows Store. Se non includo AsyncCtpLibrary.dll riferimento, compilatore dice cheUtilizzo di CTP asincrono con libreria di classi portatili

il tipo o il namespace name 'Operazioni' non esiste nello spazio dei nomi 'System.Threading' (Vi manca un riferimento all'assembly?)

Se mi includo, compilatore dice ancora gli stessi errori e aggiunge un avvertimento:

il riferimento primario "AsyncCtpLibrary" non può essere risolto, perché ha una dipendenza indiretta sul gruppo quadro "mscorlib, Version = 4.0.0.0, Cultura = neutrale, PublicKeyToken = b77a5 c561934e089 "che non è stato possibile risolvere nel framework attualmente selezionato. " .NETPortable, Version = v4.0, Profilo = Profile104" . Per risolvere questo problema, rimuovere il riferimento "AsyncCtpLibrary" o reindirizzare l'applicazione a una versione di framework che contiene "mscorlib, Versione = 4.0.0.0, Culture = neutro, PublicKeyToken = b77a5c561934e089".

Come dovrei sopportarlo?

risposta

3

semplice risposta - AsyncCTP non funziona in Visual Studio 2012 e non può essere utilizzato in alcun progetto. Per .NET 4.0 e Silverlight 5 è possibile installare Async Targeting Pack da NuGet che funziona in modo simile.
Async/await è in Portable Class Library supportato solo per il targeting di WinRT, .NET4.5 o Windows Phone 8 e anche in questo caso l'uso è piuttosto limitato. Non posso entrare in ulteriori dettagli qui, perché l'SDK di Windows Phone 8 è ancora sotto NDA.
Per WP7.5 e VS2012 non esiste attualmente alcun modo per utilizzare async/await, ma il pacchetto di targeting Async aggiornato per questa piattaforma dovrebbe essere disponibile a volte.
Si noti inoltre che AsyncCTP e Async Targeting Pack non possono essere utilizzati nelle librerie di classi portatili ed è improbabile che cambi in futuro. Il risultato è in VS2010 non è possibile utilizzare async/attendere nelle librerie di classi portatili.

+0

Quindi, dovrei tenere due versioni di classi diverse per ogni progetto? – passick

+2

Ho risolto questo problema in VS2010 - Ho finito con una cartella di progetto per la mia logica di applicazione con due file csproj, uno per WinRT e il secondo per WP7.5. Sto quindi facendo riferimento agli stessi file in entrambi i progetti e uso anche variabili condizionali come #if, ecc. Ha funzionato abbastanza bene con alcune limitazioni. –

+1

Inoltre, non hai nemmeno menzionato che potresti essere coinvolto nel wp8sdk - prima regola del fight club! :) – Stuart

1

Si può provare a utilizzare il progetto AsyncBridge al posto del AsyncCTP. Non so se ti sarà d'aiuto. Dovrete compilare in VS2012 per arrivare a questo lavoro anche se (è ancora possibile indirizzare .NET4.0):

+0

C'è un altro modo per farlo? Perché sto sviluppando per wp su Windows 7 con vs2010. – passick

+1

potresti provare a compilare il progetto che necessita di supporto asincrono in VS2012 e quindi fare riferimento a quelle dll nel tuo progetto VS210 – RoelF

5

È possibile utilizzare attualmente solo async/await in portatile quando si esegue il targeting di .NET 4.5 e delle app di Window Store. Al di fuori del portatile, è possibile utilizzare Async Targeting Pack per .NET 4.0 e Silverlight 5.

Nel dire che, tuttavia, stiamo lavorando a un pacchetto di targeting asincrono aggiornato che aggiunge il supporto per async/await in portatile quando il targeting Phone 7.5 , Silverlight 5 e .NET 4.0, vedere: http://visualstudio.uservoice.com/forums/121579-visual-studio/suggestions/2691068-support-async-in-portable-class-libraries. Lo vedrai all'inizio di ottobre.

Aggiornamento: Abbiamo appena rilasciato una versione beta di questo: http://blogs.msdn.com/b/bclteam/archive/2012/10/22/using-async-await-without-net-framework-4-5.aspx.

Problemi correlati