无法解决汇编:' Java.Interop'

时间:2016-07-05 09:01:42

标签: xamarin msbuild xamarin.ios

当我尝试构建应用程序时,我得到以下异常的异常:

  

C:\ Program Files(x86)\ MSBuild \ Xamarin \ iOS \ Xamarin.iOS.Common.targets(681,3):错误:无法解析程序集:' Java.Interop,Version = 0.1。 0.0,文化=中立,PublicKeyToken = 84e04ff9cfb79065'

我尝试清理项目并再次构建它,还更新了Xamarin.Forms包,但仍然没有运气。

关于堆栈跟踪的一点概述:

  

2> C:\ Program Files(x86)\ MSBuild \ Xamarin \ iOS \ Xamarin.iOS.Common.targets(681,3):错误:无法解析程序集:' Java.Interop,Version = 0.1.0.0,Culture = neutral,PublicKeyToken = 84e04ff9cfb79065'   2 - ;工具/Library/Frameworks/Xamarin.iOS.framework/Versions/Current/bin/mtouch执行完毕。 (TASKID:153)   2 - ; MTouch:2016-07-05T14:27:15.8191415 + 05:30 - 完成(TaskId:153)   2 - ;输出项目:_NativeLibrary =(TaskId:153)   2>完成执行任务" MTouch" - 失败。 (TASKID:153)

有没有人收到此错误?我正在为Visual Studio运行最新的Xamarin。

6 个答案:

答案 0 :(得分:9)

正如上面评论中提到的@SushiHangover Java.Interop.dll来自Xamarin.Android我在Xamarin.IOS收到错误。

我在PCL中引用了Mono.AndroidXamarin.IOS中始终引用了Xamarin.Android,因此我间接地将Xamarin.IOS的dll引用到public interface EndPointInterface{ @GET(ProximityConstants.URL_FETCH_STORE_INFO) Call<Store> getStoreInfoByBeaconUUID(@Query(ProximityConstants.BEACON_UUID) String beaconUUID); } 。从PCL中删除引用解决了我的问题。

答案 1 :(得分:1)

正如@AkashAmin所提到的'Mono.Android'引用不应该出现在PCL项目中。

但是,通过添加“使用Android”,确保您没有在PCL项目中添加任何“Android”特定代码,如果已完成,则需要使用“依赖服务”删除此代码,单击{{3 }}

答案 2 :(得分:1)

我遇到了同样的问题,当我从pcl项目中删除android.mono引用时,它运行正常。

我认为这是因为我们在ios中构建项目并且它没有任何android库

答案 3 :(得分:0)

以防万一,我在VS2013(https://bugzilla.xamarin.com/show_bug.cgi?id=41627)上使用ReSharper时出现此错误。

我所做的是使用变通方法将java.interop.dll程序集显式添加到我的项目中。这个问题不会影响Build,所以你可以先部署,VS会将java.interop下载到你应用的obj \ Debug \ linksrc文件夹中,你可以参考...

答案 4 :(得分:0)

Shared Project中特定于平台的代码将导致iOS编译器在编译时尝试使用特定于平台的程序集。

就我而言,我在共享项目的代码中的“使用”语句中有一个引用,这导致iOS尝试链接到Android特定的程序集。

从共享项目中删除代码可以成功编译项目。

答案 5 :(得分:0)

关于如何解决这个问题的分步说明,因为我花了一些时间才找到“Android 污染”的代码和平在哪里。

  1. 卸载您的通用代码项目

enter image description here

  1. 打开 .csproj 寻找类似这样的东西

      <ItemGroup>
      <Reference Include="Mono.Android">
       <HintPath>..\..\..\..\..\..\..\Program Files (x86)\Microsoft Visual Studio\2019\Professional\Common7\IDE\ReferenceAssemblies\Microsoft\Framework\MonoAndroid\v11.0\Mono.Android.dll</HintPath>
     </Reference>
    
  2. 从 csproj 中删除该段。

  3. 加载项目

enter image description here

  1. 清理并重建以 iOS 作为启动项目的解决方案,此时,您将收到一个构建错误,该错误将显示哪个 .cs 文件由于缺少引用而无法构建。
  2. 去那里并将机制移至 Android 特定项目。