6

Estoy intentando volver a escribir un proyecto en una Biblioteca de clases portátil. Pero el problema es que está usando Async CTP, y no puedo compilarlo como una biblioteca para WP y Windows Store App. Si no incluyo AsyncCtpLibrary.dll referencia, compilador dice queUso de Async CTP con la Biblioteca de clases portátil

El tipo o espacio de nombres 'Tareas' no existe en el espacio de nombres 'System.Threading' (¿falta una referencia de ensamblado?)

Si lo incluyo, compilador todavía dice los mismos errores y añade una advertencia:

la referencia principal "AsyncCtpLibrary" no se pudo resolver, ya que tiene una dependencia indirecta en el conjunto del marco "mscorlib, Versión = 4.0.0.0, Cultura = neutral, PublicKeyToken = b77a5 c561934e089 "que no se pudo resolver en el marco actualmente orientado. ".NETPortable, Versión = v4.0, Perfil = Perfil104". Para resolver este problema, elimine la referencia "AsyncCtpLibrary" o redirija su aplicación a una versión de framework que contenga "mscorlib, Version = 4.0.0.0, Culture = neutral, PublicKeyToken = b77a5c561934e089".

¿Cómo debo soportar eso?

Respuesta

3

simple respuesta - AsyncCTP no está funcionando en Visual Studio 2012 y no se puede usar en ningún proyecto. Para .NET 4.0 y Silverlight 5, puede instalar Async Targeting Pack de NuGet que funciona de manera similar.
Async/await está en la Biblioteca de clases portátil compatible únicamente con la orientación de WinRT, .NET4.5 o Windows Phone 8 e incluso entonces el uso es bastante limitado. No puedo entrar en más detalles aquí, porque Windows Phone 8 SDK todavía está bajo NDA.
Para WP7.5 y VS2012, actualmente no hay forma de cómo utilizar async/await, pero el paquete de orientación Async actualizado para esta plataforma debería estar disponible alguna vez.
Tenga en cuenta también que AsyncCTP y Async Targeting Pack no se pueden utilizar en bibliotecas de clases portátiles y es poco probable que cambie en el futuro. El resultado está en VS2010 que no puede usar async/await en Portable Class Libraries.

+0

Entonces, ¿debería mantener dos versiones de clases diferentes para cada proyecto? – passick

+2

He estado resolviendo este problema en VS2010: terminé con una carpeta de proyecto para mi lógica de aplicación con dos archivos csproj, uno para WinRT y el segundo para WP7.5. Luego estoy haciendo referencia a los mismos archivos en ambos proyectos y también uso variables de compilación condicionales como #if, etc. Funcionó bastante bien con algunas limitaciones. –

+1

¡Tampoco está bajo nda ni siquiera para mencionar que podría estar involucrado en el wp8sdk - la primera regla del club de lucha! :) – Stuart

1

Puede intentar utilizar el proyecto AsyncBridge en lugar del AsyncCTP. No sé si será de ayuda. Vas a tener que compilar en VS2012 para conseguir que esto funcione, aunque (todavía se puede orientar .NET4.0):

+0

¿Hay alguna otra manera de hacerlo? Porque estoy desarrollando para wp en Windows 7 con vs2010. – passick

+1

podría tratar de compilar el proyecto que necesita soporte asíncrono en VS2012, y luego hacer referencia a esos dll en su proyecto VS210 – RoelF

5

Actualmente, solo puede utilizar async/await en portable al orientar las aplicaciones .NET 4.5 y Window Store. Además de portátil, puede utilizar el Paquete de orientación asíncrono para .NET 4.0 y Silverlight 5.

Al decir eso, estamos trabajando en un paquete de orientación asíncrono actualizado que agrega compatibilidad con async/await en portátil cuando se dirige a Phone 7.5 , Silverlight 5 y .NET 4.0, ver: http://visualstudio.uservoice.com/forums/121579-visual-studio/suggestions/2691068-support-async-in-portable-class-libraries. Verás esto a principios de octubre.

Actualización: Acabamos de lanzar una versión beta de esto: http://blogs.msdn.com/b/bclteam/archive/2012/10/22/using-async-await-without-net-framework-4-5.aspx.

Cuestiones relacionadas