2017-04-24 22 views
-6

這是一個數據庫連接字符串:爲什麼此賦值語句在.NET Framework中工作,但不在.NET Core中工作?

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

我的朋友使用這條線在.NET框架程序和它的工作。我們都在.NET Core中嘗試過這種變體,但是這一行是錯誤的。它沒有有用的錯誤代碼。我認爲Visual Studio 2017認爲這是一個無效的陳述。

爲什麼這是一個錯誤?

+7

**錯誤說**是什麼?什麼樣的錯誤? – SLaks

+0

是否在每個變體的範圍內都有'Server'類? (「範圍」並不完全是我在這裏尋找的詞,但是我畫了一個空白,是否有適當的'using'語句或其他什麼東西?) – adv12

+0

這就是問題所在。它不給我任何有用的代碼。如果我粘貼該行,則會在此語句之前和之後出現紅線。 VS問我是否要將該語句轉換爲方法。 –

回答

-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")); 
7

字符串插值沒有任何問題。

Server.MapPath在.NET Core中不可用。這個類(和一個方法)是IIS specific

ASP .NET Core的重點在於使框架服務器不可知,因此引入了幾個新的抽象概念。

您需要使用IHostingEnvironment來解析路徑。

Blog post with an example

+0

當我嘗試使用Microsoft.AspNetCore.Hosting添加 時,出現更多錯誤: 我的程序。 AspNetCore不存在於Microsoft的命名空間中。 –

+0

很可能你需要一個http://www.nuget.org/packages/Microsoft.AspNetCore.Hosting/ NuGet包 –

相關問題