【问题标题】: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 中执行相同操作。
为什么?
【问题讨论】:
标签:
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 之前删除有问题的行,字符串插值编译错误消失,一切都很好。