字符串插值不适用于 .NET Framework 4.6

String interpolation doesn't work with .NET Framework 4.6

我刚刚在我的机器上安装了 .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 NuGet package.

以 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条错误信息:

Error 1 Unexpected character '$'

Error 2 Invalid expression term ''

Error 3 ; expected

Error 4 ; expected

这里的前3个错误与使用字符串插值的行有关,只有最后一个; expected错误是一个问题。在我们 return 和 View 之前删除有问题的行,字符串插值编译错误消失,一切都很好。