C#7本地函数不能按预期方式工作,也不会显示错误

我有一个Asp.Net MVC应用程序与框架版本.NET 4.5运行,我正在使用VS2017专业版。 用户可以上传附件,包括但不限于:

  • 高强
  • 幻灯片
  • PDF格式
  • JPEG
  • PNG

所以我有一个privatefunction,如下所示:

 private string ImageExtension(string path) { string noImagePath = HttpContext.Current.Server.MapPath("~/Contenthttp://img.dovov.comTemplate/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; } } 

正如你所看到的那样,这很简单,不会做任何事情。 由于我只是在一个地方使用这个地方,我想到了使用本地函数的新C#7function。 所以我已经提前创build了我的主函数,并在其中添加了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("~/Contenthttp://img.dovov.comTemplate/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 } 

通过上面的代码,我的项目没有任何错误。 只要我Ctrl + F5 F5Ctrl + F5我得到以下错误屏幕

在这里输入图像说明

如果我检查错误ErrorList来查看是否有任何错误,我不会得到任何错误,如下所示。

在这里输入图像说明

有人可以告诉我哪里错了吗。 是否必须更改任何设置或需要包含任何其他DLL才能使用C#7function。

这个答案似乎所有的C#7function应该在.NET 4.5上工作

您需要将名为“Microsoft.Net.Compilers”的nuget包更新为最新版本。 您的项目中最有可能安装了1.3.2版,但您需要使用2.0.1才能使用C#7function。 另外 – 你可以删除这个软件包(连同依赖它的软件包) – 那么它也可以工作,因为它会使用你安装的编译器,但我不build议这样做。

正如这个包描述所说:

.Net编译器包。 引用此包将导致项目使用包中包含的特定版本的C#和Visual Basic编译器进行构build,而不是任何系统安装版本。

所以这就是为什么现在使用C#6编译器。