Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

274
Views
La función local de C# 7 no funciona como se esperaba y no se muestran errores

Tengo una aplicación Asp.Net MVC que se ejecuta con la versión de framework .NET 4.5 y estoy usando la versión pro VS2017. Los usuarios pueden cargar archivos adjuntos que incluyen, entre otros:

  • Sobresalir
  • Palabra
  • PowerPoint
  • pdf
  • 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 puede ver, es muy simple y no hace nada elegante. Como solo estoy usando esto en un lugar, pensé en hacer uso de la nueva función local de C# 7. Así que seguí adelante y creé mi función principal de la siguiente manera y agregué 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 se compila sin ningún error. Tan pronto como presiono F5 o Ctrl + F5 aparece la siguiente pantalla de error

ingrese la descripción de la imagen aquí

Si ErrorList la Lista de errores para ver si hay algún error, no obtengo ninguno, como puede ver a continuación.

ingrese la descripción de la imagen aquí

¿Puede alguien decirme dónde me estoy equivocando, por favor? ¿Tengo que cambiar alguna configuración o necesito incluir archivos DLL adicionales para usar las características de C# 7?

Mirando esta respuesta, parece que todas las características de C# 7 deberían funcionar en .NET 4.5

about 4 years ago · Santiago Trujillo
1 answers
Answer question

0

Debe actualizar el paquete nuget llamado "Microsoft.Net.Compilers" a la última versión. Lo más probable es que tenga instalada la versión 1.3.2 en su proyecto, pero necesita la 2.0.1 para usar las funciones de C# 7. Alternativamente, puede eliminar este paquete (junto con los paquetes que dependen de él), entonces también funcionará, porque usará su compilador instalado, pero no recomiendo hacerlo.

Como dice la descripción de este paquete:

Paquete de compiladores .Net. Hacer referencia a este paquete hará que el proyecto se compile con la versión específica de los compiladores de C# y Visual Basic contenidos en el paquete, a diferencia de cualquier versión instalada en el sistema.

Es por eso que ahora usa el compilador C # 6 para usted.

about 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!