La función local de C # 7 no funciona como se esperaba y no se muestran errores
Tengo un Asp.Net La aplicación MVC se ejecuta con la versión de framework. NET 4.5 y estoy usando la versión VS2017 pro. Los usuarios pueden cargar archivos adjuntos incluyendo pero no limitado a:
- Excel
- Palabra
- PowerPoint
- jpeg
- png
Así que tengo una función private
que es la siguiente:
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;
}
}
Como puedes ver es muy simple y no hace nada sofisticado. Como solo estoy usando esto en un lugar pensé en hacer el uso de la nueva característica de C# 7 de la función local. Así que he seguido adelante y creado mi función principal de la siguiente manera y agregado ImageExtension(string path)
dentro de ella.
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
}
Con el código anterior mi proyecto construye sin ningún error. Tan pronto como golpeo F5
o Ctrl + F5
recibo la siguiente pantalla de error
Si compruebo en el ErrorList
para ver si hay algún error, no obtengo ninguno como se puede ver a continuación.
¿Puede alguien decirme dónde me estoy equivocando, por favor? Yo tiene que cambiar cualquier configuración o necesita incluir cualquier DLL adicional para hacer uso de las características de C# 7.
Mirando esto respuesta parece que todas las características de C # 7 deberían funcionar en. NET 4.5
1 answers
Necesita actualizar el paquete nuget llamado "Microsoft.Net.Compilers" a la última versión. Lo más probable es que tenga la versión 1.3.2 instalada en su proyecto, pero necesita la versión 2.0.1 para usar las características de C# 7. Alternativamente-puede eliminar este paquete en absoluto (junto con los paquetes que dependen de él) - entonces también funcionará, porque usará su compilador instalado, pero no recomiendo hacer eso.
Como dice esta descripción del paquete:
Paquete de compiladores.Net. Referencias este paquete causará el proyecto a construir usando la versión específica del C # y Visual Compiladores básicos contenidos en el paquete, a diferencia de cualquier sistema versión instalada.
Así que es por eso que usa el compilador de C# 6 para usted ahora.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-04-03 08:46:18