【问题标题】:Failed to resolve assembly : 'Java.Interop'无法解析程序集:“Java.Interop”
【发布时间】:2016-11-07 01:05:26
【问题描述】:

当我尝试构建应用程序时,出现以下异常:

C:\Program Files (x86)\MSBuild\Xamarin\iOS\Xamarin.iOS.Common.targets(681,3):错误:无法解析程序集:'Java.Interop,Version=0.1.0.0,Culture =中性,PublicKeyToken=84e04ff9cfb79065'

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

堆栈跟踪的一点概述:

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

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

【问题讨论】:

  • 您是否尝试添加 Java.Interop.dll 引用?
  • @jzeferino 我为什么需要那个。它以前工作过。我没有提到 Java.Interop。它突然停止工作。
  • 我只是建议它检查它是否有效。你有任何外部库吗?
  • @jzeferino 在哪里可以找到 Java.Interop.dll?
  • 知道了。谢谢@SushiHangover。我不知道 Mono.Android 是如何在我的 PCL 中被引用的,因此它在 iOS 中引发了错误。我删除了引用,它现在可以工作了。

标签: xamarin msbuild xamarin.ios


【解决方案1】:

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

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

  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. 加载项目

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

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

      • 这是我的问题 - 我添加了参考以对我的 PCL 中的 Android 项目进行一些检查。一旦我删除了所有代码,错误就消失了
      【解决方案4】:

      正如@AkashAmin 提到的“Mono.Android”所引用的不应在 PCL 项目中存在。

      但是有了这个,还要确保您没有通过添加“使用 Android”在 PCL 项目中添加任何“Android”特定代码,如果这样做了,那么您需要使用“依赖服务”删除此代码,点击 here

      【讨论】:

        【解决方案5】:

        以防万一,我在 VS2013 (https://bugzilla.xamarin.com/show_bug.cgi?id=41627) 上使用 ReSharper 时遇到了这个错误。

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

        【讨论】:

        • 我在被测项目项目(不是测试项目)的obj文件夹中找到了java.interop.dll
        【解决方案6】:

        正如@SushiHangover Java.Interop.dll 在上面的 cmets 中提到的,来自 Xamarin.Android,我在 Xamarin.IOS 中遇到了错误。

        我在 PCL 中有一个 Mono.Android 的引用,它总是在 Xamarin.IOS 中引用,所以我间接地将 Xamarin.Android 的 dll 引用到 Xamarin.IOS。从 PCL 中删除引用解决了我的问题。

        【讨论】:

          猜你喜欢
          • 2010-12-31
          • 1970-01-01
          • 2020-08-17
          • 1970-01-01
          • 1970-01-01
          • 2017-02-03
          • 2013-10-11
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多