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

Bid*_*dou 27 .net c# string-interpolation visual-studio

我刚刚在我的机器上安装了.NET Framework 4.6,然后使用Visual Studio 2013创建了一个针对.NET Framework 4.6的ConsoleApplication.

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

  string test = "Hello";
  string format = $"{test} world!";
Run Code Online (Sandbox Code Playgroud)

但这不编译.在Visual Studio 2015中执行相同操作.
为什么?

Dan*_*rth 46

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


joe*_*dev 28

字符串插值确实是C#6.0功能,但C#6不仅限于VS2015.

您可以通过Microsoft.Net.Compilers NuGet包定位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();
    }
} 
Run Code Online (Sandbox Code Playgroud)

编译期间将导致4条错误消息:

错误1意外字符'$'

错误2无效的表达式术语''

错误3; 预期

错误4; 预期

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

  • 有关VS2013中Rosyln的NuGet包的更多信息,请参阅[此答案](http://stackoverflow.com/a/32010632/772086). (2认同)