为什么此作业语句在.NET框架中起作用,而在.NET核心中不起作用



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

 private string _connString => $"Data Source={Server.MapPath(@"~Data")}\PhoneNumbers.sqlite";

我的朋友在.NET框架程序中使用了此行,并且可以使用。我们俩都尝试了.NET Core的变体,但是这一行是错误的。它没有有用的错误代码。我认为Visual Studio 2017认为这是无效的声明。

为什么这是错误?

字符串插值没有错。

Server.MapPath在.NET Core中不可用。此类(和方法(是特定于IIS的。

ASP .NET核心的全部要点是使框架服务器不可知,因此介绍了几个新的抽象。

您需要使用IHostingEnvironment解决路径。

博客文章带有示例。

字符串插值是一个C#6.0功能,因此,在理论上,只要您拥有VS2015 。Core 1.0用C#6.0运送。但是,两个框架之间可能会有一些差异,以防止该功能在核心中起作用。您可以重写该行,以使代码向后兼容。

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

最新更新