I came across an issue that makes me think there is bug in the 3.0 framework. When I try to use extension methods I get the following error:
Missing compiler required member
'System.Runtime.CompilerServices.ExtensionAttribute..ctor'
When using this simple code:
public static class StringUtils {
static void TestExtension(this String targetString) {
}
}
The only way to make this compile error go away is to add the following code:
namespace System.Runtime.CompilerServices {
public class ExtensionAttribute : Attribute { }
}
It's been a few months since I have used extensions methods, but I'm pretty sure I didn't have to do this. Has anyone else come across this issue?
Best Solution
I have the exact same problem. The error
System.Runtime.CompilerServices.ExtensionAttribute..ctor
is rather cryptic, and could mean a number of different things.However, for me It boiled down to the fact that I'm using
Newtonsoft.Json.Net
. I removed the reference to the fileNewtonsoft.Json.Net20.dll
, and the re-added it. After this my solution builds again.The strangest thing is that when I tried to find out what was different after this procedure by using Subversion Diff, nothing appears to have changed.
So I really don't know what removing and re-adding this reference really does, but it does fix my build issue with this particular error message mentioned by the asker.
UPDATE 1:
For those that come across this again, as the comenters pointed out, the proper way to fix this is to Download Json.Net's ZIP, and there should be a 3.5 version, re-reference 3.5 every where you are using Json.Net and delete the old reference, as it is likely referencing an assembly that was built for older versions of .net.
UPDATE 2:
Charlie Flowers points out that the DLL NewtonSoft labels as being for 3.5 is actually not going to work with 3.5. You have to use the DLL they label as being for .net 2.0