Izz*_*zzy 37 .net c# asp.net asp.net-mvc c#-7.0
我有一个运行框架版本.NET 4.5的Asp.Net MVC应用程序,我正在使用VS2017专业版.用户可以上传附件,包括但不限于:
所以我有一个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;
}
}
Run Code Online (Sandbox Code Playgroud)
正如你所看到的那样,它非常简单,并没有做任何花哨的事情.因为我只在一个地方使用它,所以我考虑使用本地功能的新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
}
Run Code Online (Sandbox Code Playgroud)
使用上面的代码,我的项目构建没有任何错误.一击,F5
或者Ctrl + F5
我得到以下错误屏幕
如果我签入ErrorList
以查看是否有任何错误,我完全没有,如下所示.
请问有人告诉我哪里出错了.我是否必须更改任何设置或需要包含任何其他DLL才能使用C#7功能.
看看这个答案,似乎所有C#7功能都应该适用于.NET 4.5
Evk*_*Evk 48
您需要将名为"Microsoft.Net.Compilers"的nuget包更新到最新版本.您很可能在项目中安装了1.3.2版,但需要2.0.1才能使用C#7功能.或者 - 您可以删除此软件包(以及依赖它的软件包) - 然后它也可以工作,因为它将使用您安装的编译器,但我不建议这样做.
正如此包描述所示:
.Net编译器包.引用此包将导致使用包中包含的特定版本的C#和Visual Basic编译器构建项目,而不是任何系统安装版本.
这就是为什么它现在使用C#6编译器的原因.