2017-04-24 10 views
-6

これは、データベースの接続文字列です:この割り当てステートメントは.NET Frameworkでは動作しますが、.NET Coreでは動作しないのはなぜですか?

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

私の友人は、.NET Frameworkのプログラムでこのラインを使用し、それが働きました。私たちはどちらも.NETコアでこれのバリエーションを試しましたが、この行はエラーです。役に立つエラーコードはありません。私はVisual Studio 2017はそれが無効なステートメントだと思うと思います。

これはなぜエラーですか?

+7

** **エラーは何ですか?どのようなエラー? – SLaks

+0

各バリエーションでクラス「サーバー」が有効範囲内にありますか? (「スコープ」は正確に私がここで探している単語ではありませんが、空白を描いています。適切な 'using'ステートメントなどのために利用できますか?) – adv12

+0

それは問題です。それは私に有用なコードを与えません。その行を貼り付けると、この文の前後に赤い行が表示されます。 VSは私がそのステートメントをメソッドに変換したいかどうかを私に尋ねます。 –

答えて

-1

文字列補間はC#6.0の機能ですので、の場合はという理論ではVS2015 +を使用する限り動作します。 C#6.0に同梱のCore 1.0。ただし、コアで機能が動作しないようにする2つのフレームワークにはいくつかの違いがあります。コードが下位互換性を持つように行を書き換えることができます。

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

文字列の補間に問題はありません。

Server.MapPathは.NETコアでは使用できません。このクラス(およびメソッド)はIIS specificです。

ASP .NETコアの全体的なポイントは、フレームワークサーバーに依存しないため、いくつかの新しい抽象概念が導入されました。

パスを解決するには、IHostingEnvironmentを使用する必要があります。

Blog post with an example

+0

追加しようとするとエラーが発生する Microsoft.AspNetCore.Hosting;を使用しています。私のプログラムに AspNetCoreは、名前空間Microsoftに存在しません。 –

+0

おそらくhttp://www.nuget.org/packages/Microsoft.AspNetCore.Hosting/ NuGetパッケージが必要です –

関連する問題