C# 字符串插值不';不能使用.NETFramework 4.6

C# 字符串插值不';不能使用.NETFramework 4.6,c#,.net,visual-studio,string-interpolation,C#,.net,Visual Studio,String Interpolation,我刚刚在我的机器上安装了.NET Framework 4.6,然后用Visual Studio 2013创建了一个以.NET Framework 4.6为目标的ConsoleApplication 我在Main方法中写了以下内容: string test = "Hello"; string format = $"{test} world!"; 但这并不适用于编译。在Visual Studio 2015中也可以这样做。 为什么?字符串插值是C#6.0的一项功能,而不是.NET Frame

我刚刚在我的机器上安装了.NET Framework 4.6,然后用Visual Studio 2013创建了一个以.NET Framework 4.6为目标的ConsoleApplication

我在
Main
方法中写了以下内容:

  string test = "Hello";
  string format = $"{test} world!";
但这并不适用于编译。在Visual Studio 2015中也可以这样做。

为什么?

字符串插值是C#6.0的一项功能,而不是.NET Framework 4.6的一项。VS 2013不支持C#6,但VS 2015支持。

字符串插值确实是C#6.0的特性,但C#6并不限于VS2015

您可以通过Microsoft.Net.Compilers以Roslyn编译器平台为目标,编译利用VS2013中C#6.0语言功能的应用程序

我的经验是,安装此软件包后,编译过程中的错误消息可能会有点误导。如果您有与C#6无关的编译错误,您将看到这些错误消息以及与您使用的任何C#6功能相关的无效语法错误消息,尽管您现在的目标是支持这些功能的编译器

例如

public class HomeController : Controller
{
    public ActionResult Index()
    {
        ViewBag.Title = "Home Page";
        var example = $"{ViewBag.Title}";
        ImASyntaxErrorWhatAmIWheresMySemicolonLOL
        return View();
    }
} 
编译期间将导致4条错误消息:

错误1意外字符“$”

错误2无效的表达式术语“”

错误3;期望

错误4;期望


这里的前3个错误与使用字符串插值的行有关,只有最后一个
;预期的
错误是一个问题。在我们返回
视图之前删除有问题的行,字符串插值编译错误消失,一切正常。

您需要VS2015,幸运的是,它将于今天发布@DavidArno你可以使用C#6 w/VS2013,你只需要一个NuGet包。有关VS2013中Rosyln的NuGet软件包的更多信息,请参阅。