Hoy, después de implementar algunos cambios en un sitio de C # MVC que ejecuto, volví para hacer algunas modificaciones más y encontré este error:
Falta el miembro obligatorio del compilador System.Runtime.CompilerServices.ExtensionAttribute..ctor
El error es un poco vago (aparte de su descripción, obviamente) ya que no me da un archivo, línea o columna para hacer referencia, solo el proyecto. Además, arroja el error un total de 20 veces. Solo hice tres cambios en el código entre el momento en que lo implementé (era completamente funcional en ese momento) y ahora. Revertí mis cambios y todavía arroja el mismo error que no tiene sentido para mí.
No he encontrado mucha información sobre este error en SO o Google, aparte de la solución de este tipo y un par de referencias a algunos errores del proyecto Mono (no estoy usando Mono). La solución que da el tipo anterior requiere agregar una definición de clase que permitirá al compilador resolver la referencia. En particular, no quiero hacer esto porque no he necesitado hacerlo hasta este punto y solo enturbiará mi código.
Solo tengo curiosidad por saber si alguien se ha encontrado con esto antes. ¡Gracias por adelantado!
fuente
Respuestas:
Este error generalmente significa que su proyecto se está compilando contra .NET 2.0 o no está haciendo referencia a la versión correcta de System.Core.dll
Para una pregunta casi duplicada, consulte Error al usar métodos de extensión en C #
fuente
En mi caso fue porque el proyecto no estaba referenciando
Microsoft.CSharp
. Una vez que agregué una referencia a ese ensamblaje, se compiló bien.fuente
No sé si alguien más ha experimentado esto, pero de repente me
dynamic
aparece este error después de agregar código utilizando tipos e incorporar WebAPI en un proyecto que se originó como una aplicación TypeScript en VS2013. Simplemente agregando una referencia a Microsoft.CSharp resolvió mi problema.Espero que esto ayude a alguien más.
fuente
Hoy también me encontré con esta situación. En mi caso, estaba haciendo referencia a Newton.Json.Net dll v3.5 en mi aplicación .NET 4.0. Me di cuenta de que ni siquiera estaba usando esta biblioteca, por lo que una vez que la eliminé de mis referencias, ya no me dio el error del compilador.
¡¡¡Problema resuelto!!!
fuente
El error real proviene del hecho de que su ensamblado 2.0 que causa el error contiene este código:
El código anterior permite que .NET 2.0 Assembly utilice métodos de extensión (consulte ¿ Usar métodos de extensión en .NET 2.0? ). Si bien confunde al compilador si apunta a .NET 4.0 y hace referencia a un ensamblado 2.0 (que contiene el código anterior), ya que mscorlib.dll (4.0) contiene la misma clase en el mismo espacio de nombres.
Arreglé esto
fuente
Escribir este código en algún lugar de su proyecto puede resolver su problema. Esto funciona para mi
fuente
NLog.dll 2.0 referenciado desde un proyecto .NET 4.0 también puede causar esto.
fuente
Probablemente use la
dynamic
palabra clave en el proyecto de biblioteca .NetStandard Class. Si es así, debe agregar una referencia a laMicrosoft.CSharp
biblioteca en el proyecto. Espero que resuelva su problema.fuente
No tengo una solución correcta, pero agregaré mi punto de datos:
En mi caso, el error es causado por hacer referencia a GoogleSearchAPINet20
Esto es lo que sucede:
No estoy haciendo referencia a System.Core.dll en mi solución y mi marco de destino es .NET 4.
Estoy un poco molesto en este punto ...
fuente
Obtuve este error al intentar usar tareas asíncronas contra .NET 4.0. La actualización de Target Framework a 4.5.2 solucionó el problema.
fuente
Llegué al mismo conjunto de excepciones después de agregar algunos métodos asíncronos a un proyecto winforms. Necesitaba subir mi versión .NET de 4 a 4.5
fuente
Para mí, el problema se produce cuando agrego un método asincrónico con async Task await en mi proyecto .net4.0.
Con versiones anteriores de .NET-Framework 4.5, debe instalar este paquete:
o
más información sobre Nuget o Nuget
fuente