Acabo de instalar .NET Framework 4.6 en mi máquina y luego creé una ConsoleApplication dirigida a .NET Framework 4.6 con Visual Studio 2013.
Escribí lo siguiente en el método Main :
string test = "Hello"; string format = $"{test} world!"; Pero esto no compila. Hacer lo mismo en Visual Studio 2015 funciona.
¿Por qué?
La interpolación de cadenas es una función de C# 6.0, no de .NET Framework 4.6. VS 2013 no es compatible con C# 6, pero VS 2015 sí.
De hecho, la interpolación de cadenas es una característica de C# 6.0, pero C# 6 no se limita a VS2015.
Puede compilar aplicaciones que aprovechen las características del lenguaje C# 6.0 en VS2013 dirigiéndose a la plataforma del compilador Roslyn a través del paquete Microsoft.Net.Compilers NuGet .
Mi experiencia ha sido que, después de instalar este paquete, los mensajes de error durante la compilación pueden ser un poco engañosos. Si tiene errores de compilación que no están relacionados con C# 6, se le mostrarán esos mensajes de error más mensajes de error relacionados con la sintaxis no válida relacionada con cualquier función de C# 6 que haya usado, a pesar de que ahora tiene como objetivo un compilador que las admita.
Por ejemplo...
public class HomeController : Controller { public ActionResult Index() { ViewBag.Title = "Home Page"; var example = $"{ViewBag.Title}"; ImASyntaxErrorWhatAmIWheresMySemicolonLOL return View(); } }dará como resultado 4 mensajes de error durante la compilación:
Error 1 Carácter inesperado '$'
Error 2 Término de expresión no válido ''
Error 3; esperado
error 4 ; esperado
Los primeros 3 errores aquí se relacionan con la línea que usa la interpolación de cadenas, solo el último ; expected error ; expected es un problema. Elimine la línea ofensiva justo antes de que devolvamos la View y los errores de compilación de interpolación de cadenas desaparecen y todo está bien.