2017-01-24 3 views
1

ich eine Lösung haben, die fein baut, wenn sie durch Visual Studio 2015 ausgeführt wird, aber wenn ich von der Kommandozeile ausführen ich in den FehlerProjekt baut mit Visual Studio in Ordnung, aber nicht von der Kommandozeile

CS1056 Fehler: Unerwartetes Zeichen '$' auf dieser Linie

var CutOffTextFragment = deadLineTime.Deadline.Minute == 0 ? $"{deadLineTime.Deadline:htt}" : $"{deadLineTime.Deadline:h:mmtt}" 

deadLineTime.Deadline ist ein Datetime-Objekt, wird der Code zurückgeben entweder XAM/PM oder X: XXAM/PM

ich denke, das auftreten wird becuase der Build-Skript nicht ist mit C# 6. Derzeit kann nicht dieses Skript geändert werden, C# 6

zu verwenden Wenn dies der Fall ist, kann mir jemand helfen, den Code an Wert verlieren, so dass es mit C# 5

+1

Es ist besser, die richtigen Parameter zu erstellen, so dass es C# 6 Code, anstatt den Code zu ändern. – dasblinkenlight

Antwort

0

$ ersetzen kann string.format umgewandelt werden.

var CutOffTextFragment = deadLineTime.Deadline.Minute == 0 
         ? 
         string.Format("{0:htt}",deadLineTime.Deadline) 
         : 
         string.Format("{0:h:mmtt}", deadLineTime.Deadline); 
-1
$"{deadLineTime.Deadline:htt}" 

ist eine Syntax Zucker für

arbeitet
string.Format("{0:htt}", deadline.Deadline); 

gleiche geht es für

$"{deadLineTime.Deadline:h:mmtt}" 

als

string.Format("{0:h:mmtt}", deadline.Deadline); 

versuchen, sie

4

Dieses Merkmal ist ein syntaktischer Zucker für C# 6 ist, versuchen Sie die neueste Version des Frameworks 4.6.2 https://www.microsoft.com/en-us/download/details.aspx?id=53345

Dann auf Ihre Projekteigenschaften, und ändern Sie auf der Anwendungsoption auf Ziel gehen zu installieren Rahmen, um auf das Neueste zu zeigen. Sie müssen Ihren Code nicht ändern, um die Zeichenfolgeninterpolation durch die string.Format-Methode zu ersetzen.

Wenn Sie immer noch diesen Fehler erhalten, weil der Compiler, der Ihren Build ausführt, nicht die neueste Version von C# ist, versuchen Sie, die Microsoft.Net.Compilers aus Nuget hinzuzufügen und erneut zu kompilieren, die das auflösen sollte Problem. Wenn Sie die Installation dieses Pakets vermeiden möchten, versuchen Sie, Ihr .csproj zu öffnen, und sehen Sie sich die ToolsVersion an, die auf Version 12 verweisen sollte, und ändern Sie sie in 14, stellen Sie jedoch sicher, dass Sie die neueste Version von MSBuild installiert haben von https://www.microsoft.com/en-us/download/details.aspx?id=48159 oder gehen Sie zu C: \ Programme (x86) \ MSBuild \ 14.0 \ Bin, dort sollten Sie diesen Ordner mit dem csc.exe Compiler haben. Wenn selbst dann das Problem nicht behoben wird, versuchen Sie, diese Schritte https://msdn.microsoft.com/en-us/library/bb383985.aspx zu folgen. Meiner Erfahrung nach löste nur das Paket von Nuget das Problem. Hoffe, das hilft

+1

Wahr! Einfach das 'Microsoft.Net.Compilers' NuGet-Paket hinzuzufügen, hat für mich funktioniert. –

+0

Arbeitete perfekt! Es ist ein guter Punkt, in das neueste Framework zu wechseln, um das Problem zu beheben. – Spencer

Verwandte Themen