"Missing compiler required member" error being thrown multiple times with almost no changes to code
C#asp.net MvcC# Problem Overview
Today after deploying some changes to a C# MVC site that I run, I went back to make some more modifications and came across this error:
> Missing compiler required member System.Runtime.CompilerServices.ExtensionAttribute..ctor
The error is a bit vague (other than it's description, obviously) as it doesn't give me a file, line, or column to reference, only the project. Also, it throws the error a total of 20 times. I only made three changes to the code between the time I deployed (it was completely functional at that time) and now. I reverted my changes and it is still throwing the same error which makes no sense to me.
I haven't found a lot of information on this error on SO or Google, other than this guys solution and a couple references to some Mono project errors (I'm not using Mono). The solution the guy above gives requires adding a class definition that will allow the compiler to resolve the reference. I don't particularly want to do this because I haven't needed to do it up until this point and it will just muddy my code.
Just curious if anyone has run across this before. Thanks in advance!
C# Solutions
Solution 1 - C#
In my case it was because the project was not referencing Microsoft.CSharp
. Once I added a reference to that assembly, it compiled just fine.
Solution 2 - C#
I don't know if anyone else has experienced this, but I suddenly rain into this error after adding some code utilizing dynamic
types and incorporating WebAPI into a project that originated as a TypeScript application in VS2013. Simply adding a reference to Microsoft.CSharp resolved my issue.
Hope this helps someone else.
Solution 3 - C#
This error usually means either your project is compiling against .NET 2.0 or you aren't referencing the correct version of System.Core.dll
For a near duplicate question, see https://stackoverflow.com/questions/205644/error-when-using-extension-methods-in-c
Solution 4 - C#
I ran into this situation as well today. In my case I was referencing the Newton.Json.Net dll v3.5 in my .NET 4.0 application. I realized that I wasnt even using this library, thus once I removed it from my references, it no longer gave me the compiler error.
Problem solved!!!
Solution 5 - C#
The actual error comes from the fact that your 2.0 assembly that causes the error contains this code:
namespace System.Runtime.CompilerServices
{
public class ExtensionAttribute : Attribute { }
}
The Code Above allows the .NET 2.0 Assembly to use extension methods (see https://stackoverflow.com/questions/1522605/using-extension-methods-in-net-2-0). While it confuses the compiler if you target .NET 4.0 and reference a 2.0 Assembly (containing above code) as the mscorlib.dll(4.0) contains the same class in the same namespace.
I fixed this
- by compiling the original 2.0 assembly again without the attribute targeting 4.0
- by removing the assembly (obviously)
- by adding a third Extension Attribute in the target you compile (it seems to overrule the referenced definitions)
Solution 6 - C#
Writing this code somewhere in your project may solve your problem. It works for me
namespace System.Runtime.CompilerServices
{
public class ExtensionAttribute : Attribute { }
}
Solution 7 - C#
NLog.dll 2.0 referenced from a .NET 4.0 project can cause this too.
Solution 8 - C#
Probably you use dynamic
keyword In .NetStandard Class library project. If so, you need to add a reference to Microsoft.CSharp
library in the project. Hope it will resolve your problem.
Solution 9 - C#
I don't have a correct solution, but I'll add my data point:
In my case the error is caused by referencing GoogleSearchAPINet20
Here is what happens:
- I close the solution that builds
- I open the solution again. It still builds
- As soon as I make any change and try to build, I get 19 "Missing compiler required member ..." errors
- I remove the reference to GoogleSearchAPINet20
- I add back the reference to GoogleSearchAPINet20
- I build the solution. It builds without errors
- I can now make code changes, build or perform any other actions with solution correctly as long as my Visual Studio is open
- I close Visual Studio
- Repeat from step one
I'm not referencing System.Core.dll in my solution at all and my target framework is .NET 4.
I'm a bit annoyed at this point ...
Solution 10 - C#
Got this error when trying to use async Tasks against .NET 4.0. Updating Target Framework to 4.5.2 fixed the problem.
Solution 11 - C#
I hit the same set of exceptions after I added some async methods to a winforms project. I needed to bump my .NET version from 4 to 4.5
Solution 12 - C#
For me, the problem occure when I add asynchronous method with async Task await in my .net4.0 project !
With previous versions of the .NET-Framework 4.5, you must install this package:
Install-package Microsoft.Bcl.Async –pre
or
Install-Package Microsoft.CompilerServices.AsyncTargetingPack