Proyección mediante delegado asíncrono / lambda.

El siguiente código no se compilará contra el CTP asíncrono en Visual Studio 2010:

Enumerable.Range(1, 5).Select(async x =>
{
    await TaskEx.Delay(100);
    return 5;
});

El error de compilación es el siguiente:

Test.cs(40,13): error CS1928: 'System.Collections.Generic.IEnumerable<int>' does not contain a definition for 'Select' and the best extension method overload 'System.Linq.Enumerable.Select<TSource,TResult>(System.Collections.Generic.IEnumerable<TSource>, System.Func<TSource,TResult>)' has some invalid arguments
Test.cs(40,49): error CS1503: Argument 2: cannot convert from 'lambda expression' to 'System.Func<int,int>'

Sin embargo, por mi lectura, lo siguiente debería ocurrir aquí:

La sobrecargaIEnumerable<TResult> Select<TSource, TResult>(this IEnumerable<TSource> source, Func<TSource, TResult> selector) debería ser usado.Como el.Range(1, 5) esIEnumerable<int>, TSource esintHaciendo lambda asíncrona, tomando unint y devolviendo unint debe producir unTask<int>, Que es queTResult debiera ser.

No veo un problema de sintaxis aquí. ¿Cuál es el problema?

Tenga en cuenta que aún no puedo usar VS11 porque mi aplicación principal requiere herramientas de Azure.

EDITAR: Esto funciona bien conmsbuild en la línea de comando, pero no en VS2010. Parece que en la línea de comandos, el compilador VS11 se está utilizando aunque estoy apuntando a .NET 4.0, mientras que VS2010 usa su propio compilador en proceso. ¿Alguien sabe cómo cambiar el compilador que usa VS2010?

Respuestas a la pregunta(1)

Su respuesta a la pregunta