Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

System.TypeLoadException: Method 'get_xxx' does not have an implementation

There are a lot of questions floating around with this problem and i've worked through them ll with no joy.

I am receiving this error:

Method 'get_UserImageCDNUrl' in type 'App.Web.WebConfig' from assembly 'App.Web, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' does not have an implementation.

Which is really strange because I am trying to run Api.Web which has no reference to App.Web, the only thing they have in common are references to other projects (Models.Domain and Models.DTO).

I have an interface:

IResourceCompiler in an assembly "Models.Domain"

I have an abstract class which implements this interface in the same assembly (Models.Domain) called WebConfigBase

In the "App.Web" and "Api.Web" projects they each have a class called WebConfig which inherit from WebConfigBase, therefore both WebConfig classes in App and Api are implementations of IResourceCompiler.

I tried to add a property

string UserImageCDNUrl {get;}

to IResourceCompiler and added the property to WebConfigBase

public string UserImageCDNUrl 
{
    get { return ""; } 
}

so the property would be accessible to both Api and Web projects through their own WebConfig classes, and i get the exception above.

I have looked for hours to try and see why this happens with no joy.

I've cleared my Obj folders, cleaned, rebuilt, checked for any instances in GAC (there aren't any) and i'm still stuck on this.

Everything works fine until i try to add a new property to the interface (and base class)

like image 390
pieperu Avatar asked Sep 21 '16 11:09

pieperu


People also ask

What causes typetypeloadexception in Java?

TypeLoadException occurs when trying to instantiate the ImplementingClass. In addition to what the asker's own answer already stated, it may be worth noting the following. The reason this happens is because it is possible for a class to have a method with the same signature as an interface method without implementing that method.

How do I fix typeloadexception in clientcode?

Uncomment the code in the two dll projects and rebuild-copy the two dlls back into the ClientCode project, rebuild and try running again. TypeLoadException occurs when trying to instantiate the ImplementingClass.

Is there a way to implement XXX method from Assembly ‘ZZZ’?

System.TypeLoadException: Method ‘XXX’ in type ‘YYY’ from assembly ‘ZZZ’ does not have an implementation. First, since I had the code for the external library (I actually built it from source), I checked the code.

Why does the runtime fail to load one of the Assemblies?

While performing an Autofac resolution operation, the runtime would fail to load one of the assemblies. The error message complained that Method 'MyMethod' in type 'MyType' from assembly 'ImplementationAssembly' does not have an implementation.


Video Answer


5 Answers

OK, so bizarrely adding a reference to App.Web in Api.Web and removing it again has solved the issue.

I have no idea why, but it did.

I changed the version of App.Web to 1.0.0.1 and the error was still showing 1.0.0.0, which is what prompted me to do it.

I wish there was a more reasonable explanation but there isn't. Such an infuriating issue i'm just glad to be done with it.

Best of luck to anyone else who experiences this, my thought's are with you

like image 100
pieperu Avatar answered Oct 01 '22 03:10

pieperu


For the records, in my case this was caused by two projects referencing different versions of the same package. At least fixing this solved the issue.

like image 30
Nicholas Reis Avatar answered Sep 29 '22 03:09

Nicholas Reis


There can be many reasons for this, all the previous answers represent a case of this problem.

What I suggest doing is:
while your program is running open Resource Monitor -> CPU tab and in the search handles input box, search for the assembly that supposedly doesn't implement that method.

In the search results you'll see the path of your assembly, and most likely the path that you see isn't the one that you expect.
Delete the assembly from this unexpected path so that the correct assembly gets loaded.

like image 43
janos laszlo Avatar answered Sep 29 '22 03:09

janos laszlo


In many cases I become this error. It seems like Cached assembly and I found them in UserProfile.

My solution is:

  1. Save solution and close Visual Studio
  2. Delete entire folder "c:\Users(user)\AppData\Local\Microsoft\VisualStudio\14.0\ProjectAssemblies\"
  3. Start Visual Studio
  4. Work...

Hope it helps.

like image 24
Vojta Novák Avatar answered Oct 02 '22 03:10

Vojta Novák


I just remove the reference of current project (which is showing error) , and add again to other project in which project this was referenced build and it start working fine.

hope this help someone.

like image 36
Usman Younas Avatar answered Sep 28 '22 03:09

Usman Younas