Projektion mit asynchronem Delegaten / Lambda

Der folgende Code wird nicht mit Async CTP in Visual Studio 2010 kompiliert:

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

Der Kompilierungsfehler ist wie folgt:

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

Nach meiner Lektüre sollte hier jedoch Folgendes geschehen:

Die ÜberlastungIEnumerable<TResult> Select<TSource, TResult>(this IEnumerable<TSource> source, Func<TSource, TResult> selector) sollte benutzt werden.Als die.Range(1, 5) istIEnumerable<int>, TSource istintDas Lambda asynchron machen und eineint und zurückint sollte eineTask<int>, welches ist wasTResult sollte sein.

Ich sehe hier kein Syntaxproblem. Worin besteht das Problem?

Beachten Sie, dass ich VS11 noch nicht verwenden kann, da für meine Hauptanwendung Azure-Tools erforderlich sind.

BEARBEITEN: Das funktioniert gut mitmsbuild in der Befehlszeile, aber nicht in VS2010. An der Befehlszeile wird anscheinend der VS11-Compiler verwendet, obwohl ich auf .NET 4.0 abstelle, während VS2010 seinen eigenen In-Process-Compiler verwendet. Weiß jemand, wie man den Compiler austauscht, den VS2010 verwendet?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage