Während der Arbeit mit der neuesten Version von roslyn-ctp Ich habe festgestellt, dass es das dynamic
Schlüsselwort während der Kompilierung und der Skriptausführung nicht unterstützt, dh Sie erhalten einen Kompilierungsfehler error CS8000: This language feature ('dynamic') is not yet implemented in Roslyn.
Hier ist ein kurzer Codeausschnitt:
Bei der Arbeit mit await
keyword ...
Im Gegensatz dazu, während ich mit await
keyword bei der Kompilierung oder dem Skript arbeite, habe ich normalerweise einen zufälligen Kompilierungsfehler wie den folgenden:
error CS1001: Identifier expected
error CS1003: Syntax error, ',' expected
error CS0246: The type or namespace name 'await' could not be found (are you missing a using directive or an assembly reference?)
Beispiel für die Skripterstellung
%Vor%Beispiel für die Kompilierung
%Vor%Q Fehle ich etwas oder ist es noch nicht implementiert?
Ich habe verschiedene Konfigurationen mit LanguageVersion.CSharp5
und ohne versucht. Sowohl die Google- als auch die Stackoverflow-Suche ist voller Marketing-Hype für roslyn und async gekennzeichnet sind und fast nutzlos sind. Microsoft "Roslyn" CTP-Forum hat auch keine Antwort dafür.
ps: Soweit ich weiß, hat async
keyword für die Lesbarkeit sowohl von Menschen als auch von Compilern eingeführt, während await
alles magic
await
support ist im aktuellen Roslyn CTP nicht implementiert (obwohl es jetzt in internen Builds implementiert ist).
Der Grund für den Unterschied bei der Fehlerberichterstattung ist, dass wir zuerst den Roslyn-Parser so erstellt haben, dass er die gesamte C # 4-Sprache verarbeiten konnte, und dann semantisch die einzelnen Funktionen einzeln ausgefüllt haben. Da await
ein C # 5-Feature ist, wird es vom Parser nicht einmal erkannt, und es gibt keinen Platz, um seine Verwendung zu erkennen und einen guten Fehler zu liefern.
Eigentlich hat das Roslyn-Forum die Antwort. Wenn Sie sich die Post Bekannte Einschränkungen ansehen und Unimplemented Language Features , Sie werden feststellen, dass es "Async" unter den noch nicht implementierten Funktionen in C # enthält.
Diese Liste bezieht sich auf das CTP im Juni, aber seit Die Liste der Änderungen zwischen der Juni CTP und der Dezember CTP enthält keine Async, das heißt, sie ist einfach noch nicht implementiert.
Ich denke, der Grund für den Unterschied in der Fehlermeldung ist, dass Roslyn dynamic
versteht (aber noch nicht implementiert). Auf der anderen Seite versteht es async
- await
nicht, so dass es generische Kompilierungsfehler gibt.
Tags und Links c# async-await roslyn c#-5.0