Ответ 1
Интерполяция строк - это функция С# 6.0, а не одна из .NET Framework 4.6. VS 2013 не поддерживает С# 6, но VS 2015 делает.
Я только что установил .NET Framework 4.6 на свой компьютер, а затем создал приложение ConsoleApplication с платформой .NET Framework 4.6 с Visual Studio 2013.
Я написал следующее в методе Main
:
string test = "Hello";
string format = $"{test} world!";
Но это не компилируется. Выполнение этого же в Visual Studio 2015 работает.
Почему?
Интерполяция строк - это функция С# 6.0, а не одна из .NET Framework 4.6. VS 2013 не поддерживает С# 6, но VS 2015 делает.
Интерполяция строк действительно является функцией С# 6.0, но С# 6 не ограничивается VS2015.
Вы можете скомпилировать приложения, которые используют возможности языка С# 6.0 в VS2013, путем таргетинга на платформу компилятора Roslyn через пакет Microsoft.Net.Compilers
NuGet.
Мой опыт заключается в том, что после установки этого пакета сообщения об ошибках во время компиляции могут немного вводить в заблуждение. Если у вас есть ошибки компиляции, не связанные с С# 6, вам будут показаны эти сообщения об ошибках плюс сообщения об ошибках относительно недействительного синтаксиса, относящиеся к любым функциям С# 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
, и ошибки компиляции строки интерполяции исчезнут, и все будет хорошо.