Lokale C#7-Funktion funktioniert nicht wie erwartet und es werden keine Fehler angezeigt



asp.net .net (1)

Ich habe eine Asp.Net MVC App, die mit der Framework-Version .NET 4.5 ausgeführt wird, und verwende die VS2017 Pro-Version. Benutzer können Anhänge hochladen, einschließlich:

  • Excel
  • Wort
  • Power Point
  • pdf
  • jpeg
  • png

Ich habe also eine private Funktion, die wie folgt lautet:

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;
   }
}

Wie Sie sehen, ist es sehr einfach und macht nichts Besonderes. Da ich dies nur an einem Ort verwende, dachte ich über die Verwendung der neuen C # 7-Funktion der lokalen Funktion nach. Also habe ich meine Hauptfunktion wie folgt erstellt und ImageExtension(string path) hinzugefügt.

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
 }

Mit dem obigen Code baut mein Projekt fehlerfrei auf. Sobald ich F5 oder Ctrl + F5 erhalte ich den folgenden Fehlerbildschirm

Wenn ich in der ErrorList , ob es Fehler gibt, bekomme ich keine, wie Sie unten sehen können.

Kann mir jemand sagen, wo ich falsch liege, bitte. Muss ich irgendwelche Einstellungen ändern oder zusätzliche DLLs hinzufügen, um die C # 7-Funktionen nutzen zu können?

Wenn Sie this Antwort betrachten, scheinen alle C # 7-Features unter .NET 4.5 zu funktionieren


Sie müssen das Nuget-Paket mit dem Namen "Microsoft.Net.Compilers" auf die neueste Version aktualisieren. Wahrscheinlich haben Sie in Ihrem Projekt Version 1.3.2 installiert, benötigen jedoch 2.0.1, um C # 7-Funktionen zu verwenden. Alternativ - Sie können dieses Paket überhaupt entfernen (zusammen mit Paketen, die davon abhängen) -, dann wird es auch funktionieren, da es Ihren installierten Compiler verwendet, aber ich empfehle Ihnen das nicht.

Wie diese Paketbeschreibung sagt:

.Net Compiler-Paket. Wenn Sie auf dieses Paket verweisen, wird das Projekt mit der spezifischen Version der im Paket enthaltenen C # - und Visual Basic-Compiler erstellt, im Gegensatz zu jeder installierten Systemversion.

Deshalb verwendet es jetzt den C # 6-Compiler für Sie.





c#-7.0