Uno o más tipos necesarios para comstackr una expresión dinámica no se pueden encontrar. ¿Le faltan referencias a Microsoft.CSharp.dll y System.Core.dll?

Estoy intentando comstackr este código en Microsoft Visual C # 2010

using System; using System.Globalization; class main { static void Main() { dynamic d; d = "dyna"; Console.WriteLine(d); } } 

pero estoy recibiendo estos dos errores

Error 1 El tipo predefinido ‘Microsoft.CSharp.RuntimeBinder.Binder’ no está definido ni importado

Error 2 No se pueden encontrar uno o más tipos necesarios para comstackr una expresión dinámica. ¿Le faltan referencias a Microsoft.CSharp.dll y System.Core.dll?

Leí esta otra publicación pero soy nuevo en C # y no pude entender cuál es realmente el problema. Especialmente qué y dónde se encuentran estos archivos .config ..

En la ventana del explorador de soluciones, haga clic con el botón derecho en Referencias, seleccione Agregar referencia, vaya a la pestaña .NET, busque y agregue Microsoft.CSharp.

Asegúrese de que su proyecto esté dirigido a .NET framework 4.0. Visual Studio 2010 también admite el objective de marco de .NET 3.5, pero .NET 3.5 no es compatible con la palabra clave dynamic .

Puede ajustar la versión del marco en las propiedades del proyecto. Consulte http://msdn.microsoft.com/en-us/library/bb398202.aspx para obtener más información.

Tuve el mismo problema, excepto que al eliminar y agregar la referencia no solucioné el error, así que cambié la versión .Net de 4.5 a 4.5.1 .

Para lograr esto, vaya a su archivo web.config y cambie las siguientes líneas

   

a esto

   

y reconstruir

Las líneas rojas debajo del ViewBag fueron mi dolor de cabeza durante 3 meses). Simplemente elimine la referencia de Microsoft.CSharp del proyecto y luego vuelva a agregarla.

Tuve el mismo problema y lo resolví quitando la referencia “Microsoft.CSharp” del proyecto y luego lo agregué nuevamente.

Para mí, eliminar y volver a agregar una referencia a Microsoft.CSharp solucionó el problema temporalmente hasta que se editó el archivo afectado. El cierre de Visual Studio y la reapertura del proyecto lo arreglaron a más largo plazo, por lo que esa es una opción si esta situación ocurre mientras Microsoft.CSharp ya está referenciado.

Quizás reiniciar el IDE como primer paso parece trivial, pero aquí hay un recordatorio para personas como yo que no piensan en eso como lo primero que deben hacer.

Ninguno de estos funcionó para mí.

Sin lugar a dudas, mis bibliotecas de clase se referían tanto a System.Core como a Microsoft.CSharp. La aplicación web fue 4.0 y no se pudo actualizar a 4.5 debido a problemas de soporte.

Me encontré con el error comstackndo una plantilla de afeitar usando el Razor Engine , y solo encontrándola intermitentemente, como después de que la aplicación web se haya reiniciado.

La solución que funcionó para mí fue cargar manualmente el ensamblaje y luego volver a probar la misma operación …

  bool retry = true; while (retry) { try { string textTemplate = File.ReadAllText(templatePath); Razor.CompileWithAnonymous(textTemplate, templateFileName); retry = false; } catch (TemplateComstacktionException ex) { LogTemplateException(templatePath, ex); retry = false; if (ex.Errors.Any(e => e.ErrorNumber == "CS1969")) { try { _logger.InfoFormat("Attempting to manually load the Microsoft.CSharp.RuntimeBinder.Binder"); Assembly csharp = Assembly.Load("Microsoft.CSharp, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"); Type type = csharp.GetType("Microsoft.CSharp.RuntimeBinder.Binder"); retry = true; } catch(Exception exLoad) { _logger.Error("Failed to manually load runtime binder", exLoad); } } if (!retry) throw; } } 

Espero que esto pueda ayudar a alguien más allá.

Si falla, Microsoft.CSharp.dll, este error puede ocurrir. Verifica las referencias de tu proyecto.