Projeção usando delegado assíncrono / lambda

O seguinte código não irá compilar contra o CTP Async no Visual Studio 2010:

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

O erro de compilação é o seguinte:

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>'

No entanto, pela minha leitura, o seguinte deve ocorrer aqui:

A sobrecargaIEnumerable<TResult> Select<TSource, TResult>(this IEnumerable<TSource> source, Func<TSource, TResult> selector) deve ser usado.Enquanto o.Range(1, 5) éIEnumerable<int>, TSource éintFazendo o lambda assíncrono, tomando umint e retornando umint deve produzir umTask<int>que é o queTResult deveria estar.

Eu não vejo um problema de sintaxe aqui. Qual é o problema?

Observe que não posso usar o VS11 ainda porque meu aplicativo principal requer ferramentas do Azure.

EDITAR: Isso funciona bem commsbuild na linha de comando, mas não no VS2010. Parece que na linha de comando, o compilador VS11 está sendo usado mesmo que eu esteja direcionando o .NET 4.0, enquanto o VS2010 usa seu próprio compilador em processo. Alguém sabe como trocar o compilador que o VS2010 usa?

questionAnswers(0)

yourAnswerToTheQuestion