【问题标题】:String interpolation doesn't work with .NET Framework 4.6字符串插值不适用于 .NET Framework 4.6
【发布时间】:2015-10-09 11:22:00
【问题描述】:

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

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

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

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

【问题讨论】:

  • 你需要VS2015,幸运的是今天发布!
  • @DavidArno 你可以使用带有 VS2013 的 C#6,你只需要一个 NuGet 包。见my answer below

标签: c# .net visual-studio string-interpolation


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    您可以通过Microsoft.Net.CompilersNuGet 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条错误信息:

    错误 1 ​​意外字符“$”

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

    错误 3 ;预计

    错误 4 ;预计

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

    【讨论】:

    • 有关 VS2013 中 Rosyln 的 NuGet 包的更多信息,请参阅 this answer
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-08
    • 2020-01-01
    • 2017-01-06
    • 1970-01-01
    • 2023-02-08
    相关资源
    最近更新 更多