C# 为什么此赋值语句在.NET Framework中有效,而在.NET Core中无效?

C# 为什么此赋值语句在.NET Framework中有效,而在.NET Core中无效?,c#,asp.net-core,.net-core,C#,Asp.net Core,.net Core,这是数据库的连接字符串: private string _connString => $"Data Source={Server.MapPath(@"~\Data")}\\PhoneNumbers.sqlite"; 我的朋友在一个.NETFramework程序中使用了这一行,它很有效。我们都在.NETCore中尝试过这种变体,但这一行是错误的。它没有有用的错误代码。我认为Visual Studio 2017认为这是一个无效的声明 为什么这是一个错误?字符串插值是C 6.0的一个功能,所

这是数据库的连接字符串:

 private string _connString => $"Data Source={Server.MapPath(@"~\Data")}\\PhoneNumbers.sqlite";
我的朋友在一个.NETFramework程序中使用了这一行,它很有效。我们都在.NETCore中尝试过这种变体,但这一行是错误的。它没有有用的错误代码。我认为Visual Studio 2017认为这是一个无效的声明


为什么这是一个错误?

字符串插值是C 6.0的一个功能,所以理论上只要你有VS2015+,它就应该工作。Core 1.0随C 6.0一起提供。然而,这两个框架之间可能存在一些差异,从而妨碍了该特性在核心中工作。您可以重写该行,使代码向后兼容

private string _connString = String.Format("Data Source={0}\\PhoneNumbers.sqlite", Server.MapPath(@"~\Data"));

字符串插值没有错

Server.MapPath在.NET Core中不可用。这个类和一个方法是

NET核心的全部要点是使框架服务器不可知,因此引入了几个新的抽象

您需要使用来解析路径


.

错误说明了什么?什么类型的错误?类服务器是否在每个变体的作用域中?范围并不是我在这里要找的词,但我在画一个空白。它是由于适当的using语句或其他原因而可用的吗?这就是问题所在。它没有给我任何有用的代码。如果我粘贴该行,则此语句前后都会出现红线。VS问我是否要将该语句转换为方法。你明白这行代码的作用吗?例如,我发现对属性使用字段命名约定特别奇怪,尽管这不是错误的原因:当我尝试使用Microsoft.AspNetCore.Hosting添加时,会出现更多错误;我的节目。Microsoft命名空间中不存在AspNetCore。您很可能需要一个NuGet包