13
votes

Hello since the last Xamarin update we get this error.

CS0012 The type 'IJavaPeerable' is defined in an assembly that is not referenced. You must add a reference to assembly 'Java.Interop, Version=0.1.0.0, Culture=neutral, PublicKeyToken=84e04ff9cfb79065'. ImageLibrary C:\Users\rutge\Source\Repos\GarderobeApp\ImageSwiper\ImageSwiper.cs 33 Active

Does anybody have an idea what this means?

8
Can you post the code where you are getting this error? I remember getting these errors in my Android project a year ago. I am pretty sure you need to inherit some behavior from a certain class defined in the library that is referenced in the error message. - Glubus
Visual Studio will prompt you to add that reference. - Vahid Amiri

8 Answers

29
votes

You can found it here

C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\MonoAndroid\v1.0\Java.Interop.dll

then :

  1. Go to your Android project
  2. Right Click in reference and choose "Add Reference"
  3. Browse file location
  4. Add and done

if you still get error, try to rebuild your project

8
votes

I go the same error after the last update. You just have to add the reference to Java.Interop to resolve the problem.

  1. Go to your Android project
  2. Right Click in reference and choose "Add Reference"
  3. On Assembly, look for Java.Interop and add it
  4. Rebuild your project

If you need some screenshots, I can provide them later.

6
votes

In my case it was a bit different, I couldn't find monoandroid folder in

C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework. 

So on further I searched and found it in

C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\ReferenceAssemblies\Microsoft\Framework\MonoAndroid

This might be the case with someone else.

2
votes

You can hover over the offending line and see the missing DLL.

Line complaining about missing reference

Now add the missing reference;

  1. Open the Solution Explorer, and within References right click, and select Add ReferenceAdd Reference from Solution Explorer

  2. Within the Reference Manager click Browse, and Browse again. Add reference

  3. In the file dialog copy and paste this path:

    C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\MonoAndroid\v1.0\

Go to DLL path

Click Java.Interop.dll

Add file

  1. Okay the Reference Manager
1
votes

You can directly copy the assembly Java.Interop.dll from the C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\MonoAndroid\v1.0 to the bin/Debug folder of your project to resolve the issue.

This procedure perfectly worked for me.

Thanks,

0
votes

These errors are not due to a problem with the solution or the references. They are a by-product of other changes that seem to confuse tools like ReSharper. At least this is correct in my case, my solution still compiles and functions without manually referencing any Reference Assemblies.

There is a Xamarin bug report for this but they determined this to be an external issue with ReSharper as per my experience.

Rather than manually adding references to the project you can also tell ReSharper to simply ignore the errors by opening:

ReSharper -> Windows -> Solution Errors

And then ignoring the issues here.

0
votes

In my case iOS and Android use the seem Business Layer when I run my android application works ok but when I run iOS show me the error You must add a reference to assembly 'Java.Interop, Version=0.1.0.0, Culture=neutral, PublicKeyToken=84e04ff9cfb79065'

The problem: I was using JSONObject from Org.Json

https://docs.microsoft.com/en-us/dotnet/api/org.json.jsonobject?view=xamarin-android-sdk-9

this dll just work with android

I need change for JsonObject from System.Json

https://docs.microsoft.com/en-us/dotnet/api/system.json.jsonobject?view=dotnet-plat-ext-2.1

That was my solution, now my two applications work

0
votes

If you still can't find Java.Interop, then search for "Java.Interop" in your search bar inside C: drive and add it as a reference to your project.