2015-07-20 13 views
25

Ho appena installato il .NET Framework 4.6 sulla mia macchina e poi creato un ConsoleApplication mira .NET Framework 4.6 con Visual Studio 2013.String interpolazione non funziona con .NET Framework 4.6

ho scritto quanto segue nella Main metodo:

string test = "Hello"; 
    string format = $"{test} world!"; 

Ma questo non viene compilato. Fare lo stesso in Visual Studio 2015 funziona.
Perché?

+4

Hai bisogno di VS2015, che per tua fortuna dovrebbe essere rilasciato oggi! –

+1

@DavidArno È possibile utilizzare C# 6 con VS2013, è sufficiente un pacchetto NuGet. Vedi [la mia risposta sotto] (http://stackoverflow.com/questions/31514767/string-interpolation-doesnt-work-with-net-framework-4-6/33179311#33179311). – joelmdev

risposta

42

L'interpolazione delle stringhe è una funzionalità C# 6.0, non una di .NET Framework 4.6. VS 2013 non supporta C# 6 ma VS 2015 fa.

26

L'interpolazione delle stringhe è in effetti una funzionalità C# 6.0, ma C# 6 non è limitato a VS2015.

È possibile compilare applicazioni che sfruttano le funzionalità del linguaggio C# 6.0 in VS2013 indirizzando la piattaforma del compilatore Roslyn tramite Microsoft.Net.CompilersNuGet package.

La mia esperienza è stata che, dopo aver installato questo pacchetto, i messaggi di errore durante la compilazione possono essere un po 'fuorvianti. Se hai errori di compilazione che non sono correlati a C# 6, ti verranno mostrati quei messaggi di errore più i messaggi di errore relativi alla sintassi non valida relativa a tutte le funzionalità di C# 6 che hai utilizzato nonostante il targeting di un compilatore che le supporta.

Per esempio ...

public class HomeController : Controller 
{ 
    public ActionResult Index() 
    { 
     ViewBag.Title = "Home Page"; 
     var example = $"{ViewBag.Title}"; 
     ImASyntaxErrorWhatAmIWheresMySemicolonLOL 
     return View(); 
    } 
} 

si tradurrà in 4 messaggi di errore durante la compilazione:

di errore 1 carattere imprevisto '$'

errore 2 termine espressione non valido ''

Errore 3; previsto

Errore 4; previsto

I primi 3 errori qui si riferiscono alla linea che utilizza l'interpolazione stringa, solo l'ultimo errore ; expected è un problema. Rimuovere la riga incriminata appena prima di restituire lo View e gli errori di compilazione dell'interpolazione della stringa scompaiono e tutto va bene.

+2

Vedere [questa risposta] (http://stackoverflow.com/a/32010632/772086) per ulteriori informazioni sul pacchetto NuGet per Rosyln in VS2013. – Mike

Problemi correlati