2017-06-02 1 views
0

Ich habe ein komplexes Projekt, das .Net 4.0 verwendet. (das Zielframework ist .Net 4).C# 7.0 Sprachfunktionen kompilieren Fehler auf .Net 4.x

Ich verwende Visual Studio 2017, die Quelle zu kompilieren, und verwenden den folgenden Code:

if(int.TryParse(inputText, out int x)) 
    StartAnotherMethod(x); 

Es successfuly auf meinem Computer zusammengestellt, damit ich für den Build-Server verpflichtet.

Überraschenderweise hatte es Kompilierungsfehler.

Fehler CS1525: Ungültige Ausdruck Begriff 'int'

Fehler CS1003: Syntaxfehler, '' erwartet

Ich habe es in einem Online-Compiler. Es verwendet .Net 4.5 und zeigt auch Kompilierungsfehler.

https://dotnetfiddle.net/pibxC2

Übersetzungsfehler (Zeile 9, Spalte 32): Ungültiger Ausdruck Begriff 'int'

Übersetzungsfehler (Zeile 9, Spalte 33); erwartete

Übersetzungsfehler (Zeile 9, Spalte 33): Ungültiger Ausdruck Begriff ')'

Übersetzungsfehler (Zeile 9, Spalte 34); erwartete

Übersetzungsfehler (Zeile 9, Spalte 34): Ungültiger Ausdruck Begriff ')'

Übersetzungsfehler (Zeile 9, Spalte 35); erwartet

Wie ich gelesen habe,Sprachfunktionen keine neuen Rahmenbedingungen erfordern, so sollte es ohne Probleme kompilieren.

Was habe ich vermisst?

+10

Sie sind der Compiler zu Roslyn nicht einen Compiler für C# 7. Ändern verwenden. – Amy

+0

Welcher Compiler wird von Ihrem Build-Server verwendet? Sie benötigen den Compiler von VisualStudio 2017, um Ihr Projekt zu kompilieren. – Tomtom

+0

Welchen Compiler verwendet der Build-Server? Diese Funktionen hängen von der Version des Compilers ab, nicht von der Version des Frameworks. – juharr

Antwort

10

Sie verwenden keinen Compiler für C# 7. Ändern Sie den Compiler zu Roslyn.

Der Schlüssel hier ist, dass die verfügbaren Sprachfunktionen vom Compiler bestimmt werden, nicht das Zielframework.

+0

Der Schlüssel hier ist, dass die verfügbaren Sprachfunktionen durch den * Compiler *, nicht das Zielframework bestimmt werden. Vielleicht könnten Sie das zur Antwort hinzufügen? –

+0

Sicher Sache. Danke für den Vorschlag. – Amy

-1

Versuchen Sie, diese

int x; 
if(int.TryParse(inputText, out x)) 
    StartAnotherMethod(x); 
+0

Ja, wusste ich schon diese Antwort :) Die Absicht war es, die neue Funktion zu verwenden. – Nestor