フレームワークバージョン.NET 4.5で実行されているAsp.Net MVCアプリがあり、VS2017 proバージョンを使用しています。ユーザーは以下を含む添付ファイルをアップロードできますが、これらに限定されません。
だから私は次のようなprivate
関数を持っています:
_private string ImageExtension(string path)
{
string noImagePath = HttpContext.Current.Server.MapPath("~/Content/images/Template/No-Image-Available-100x100.jpg");
string fileExtension = System.IO.Path.GetExtension(path);
switch (fileExtension)
{
case ".jpg":
case ".jpeg":
case ".gif":
case ".png":
return path;
default:
return noImagePath;
}
}
_
ご覧のとおり、これは非常にシンプルで、特別なことは何もしていません。私はこれを1つの場所でのみ使用しているので、ローカル関数の新しいC#7機能を利用することを考えました。それで私は先に進み、次のように私のメイン関数を作成し、その中にImageExtension(string path)
を追加しました。
_public void BugInfo(HttpPostedFileBase file)
{
if(file != null && file.ContentLength > 0)
{
string fileName = file.FileName;
string directoryPath = "directory path";
//save path of
string savePath = System.IO.Path.Combine(directoryPath, fileName);
string testString = ImageExtension(savePath);
string ImageExtension(string path)
{
string noImagePath = HttpContext.Current.Server.MapPath("~/Content/images/Template/No-Image-Available-100x100.jpg");
string fileExtension = System.IO.Path.GetExtension(path);
switch (fileExtension)
{
case ".jpg":
case ".jpeg":
case ".gif":
case ".png":
return path;
default:
return noImagePath;
}
}
}
//save values to db here
}
_
上記のコードを使用すると、プロジェクトはエラーなしでビルドされます。 _F5
_または_Ctrl + F5
_を押すとすぐに、次のエラー画面が表示されます
ErrorList
をチェックインしてエラーがあるかどうかを確認すると、以下のようにまったくエラーが発生しません。
誰かがどこが間違っているのか教えてもらえますか? C#7の機能を使用するには、設定を変更する必要があるか、追加のDLLを含める必要がありますか?.
thisの回答を見ると、C#7のすべての機能が.NET 4.5で動作するはずです
"Microsoft.Net.Compilers"という名前のnugetパッケージを最新バージョンに更新する必要があります。ほとんどの場合、プロジェクトにバージョン1.3.2がインストールされていますが、C#7の機能を使用するには2.0.1が必要です。別の方法として、このパッケージを(それに依存するパッケージと一緒に)まったく削除することもできます。インストールされているコンパイラーを使用するため、このパッケージも機能しますが、お勧めしません。
このパッケージの説明にあるように:
.Netコンパイラパッケージ。このパッケージを参照すると、システムにインストールされているバージョンではなく、パッケージに含まれているC#およびVisual Basicコンパイラの特定のバージョンを使用してプロジェクトがビルドされます。
これが、C#6コンパイラを使用する理由です。