J'ai une application Asp.Net MVC fonctionnant avec la version de framework .NET 4.5 et j'utilise la version pro VS2017. Les utilisateurs peuvent télécharger des pièces jointes, notamment:
J'ai donc une fonction private
qui est la suivante:
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;
}
}
Comme vous pouvez le voir, c'est très simple et ne fait rien d'extraordinaire. Comme je n'utilise cela qu'à un seul endroit, j'ai pensé à utiliser la nouvelle fonctionnalité C # 7 de la fonction locale. J'ai donc continué et créé ma fonction principale comme suit et ajouté ImageExtension(string path)
à l'intérieur.
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
}
Avec le code ci-dessus, mon projet se construit sans aucune erreur. Dès que j'appuie sur F5
Ou Ctrl + F5
J'obtiens l'écran d'erreur suivant
Si je vérifie dans le ErrorList
pour voir s'il y a des erreurs, je n'en reçois aucune comme vous pouvez le voir ci-dessous.
Quelqu'un peut-il me dire où je vais mal s'il vous plaît. Dois-je modifier des paramètres ou dois-je inclure des DLL supplémentaires pour utiliser les fonctionnalités C # 7?.
En regardant this, il semble que toutes les fonctionnalités C # 7 devraient fonctionner sur .NET 4.5
Vous devez mettre à jour le package nuget nommé "Microsoft.Net.Compilers" vers la dernière version. Vous avez probablement installé la version 1.3.2 dans votre projet, mais vous avez besoin de 2.0.1 pour utiliser les fonctionnalités C # 7. Alternativement - vous pouvez supprimer ce package (ainsi que les packages qui en dépendent) - alors cela fonctionnera également, car il utilisera votre compilateur installé, mais je ne recommande pas de le faire.
Comme le dit cette description de package:
Package de compilateurs .Net. Référencer ce package entraînera la construction du projet à l'aide de la version spécifique des compilateurs C # et Visual Basic contenus dans le package, par opposition à toute version installée du système.
C'est pourquoi il utilise maintenant le compilateur C # 6.