这是数据库的连接字符串:
private string _connString => $"Data Source={Server.MapPath(@"~\Data")}\\PhoneNumbers.sqlite";
我的朋友在.NET Framework程序中使用了这一行并且它有效。我们都在.NET Core中尝试过这种变体,但这行是错误的。它没有有用的错误代码。我认为Visual Studio 2017认为这是一个无效的声明。
为什么这是一个错误?
答案 0 :(得分:7)
字符串插值没有问题。
Server.MapPath
在.NET Core中不可用。这个类(和方法)是IIS specific。
ASP .NET Core的重点是使框架服务器不可知,因此引入了几个新的抽象。
您需要使用IHostingEnvironment
来解析路径。
答案 1 :(得分:-1)
字符串插值是C#6.0的一个特性,所以理论上 只要你有VS2015 +就可以工作。 Core 1.0附带C#6.0。但是,这两个框架之间可能存在一些差异,导致该功能无法在Core中运行。您可以重写该行,以便代码向后兼容。
private string _connString = String.Format("Data Source={0}\\PhoneNumbers.sqlite", Server.MapPath(@"~\Data"));