无法解析程序集:'Java.Interop'

问题描述 投票:0回答:8

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

C:\ Program Files(x86)\ MSBuild \ Xamarin \ iOS \ Xamarin.iOS.Common.targets(681,3):错误:无法解析程序集:'Java.Interop,版本= 0.1.0.0,文化=中性, 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 执行完成。 (任务编号:153) 2> MTouch: 2016-07-05T14:27:15.8191415+05:30 - 已完成(任务 ID:153) 2> 输出项:_NativeLibrary= (TaskId:153) 2> 完成执行任务“MTouch”——失败。 (任务ID:153)

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

xamarin msbuild xamarin.ios
8个回答
15
投票

正如@SushiHangover 在上面的评论中提到的,

Java.Interop.dll
来自
Xamarin.Android
,我在
Xamarin.IOS
中收到错误。

我在 PCL 中有一个对

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


3
投票

关于如何解决这个问题的分步说明,因为我花了一些时间才找到“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 特定项目。

1
投票

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

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


1
投票

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

我认为发生这种情况是因为我们正在 ios 中构建项目,并且它没有任何 android 库


1
投票

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

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

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


0
投票

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

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


0
投票

您需要在 Android 链接上检查您的 PLC 项目。在PLC项目中ctrl+f,让我们找到“Android”并将其删除。


0
投票

我尝试了上述方法,但没有成功解决这个问题。 我按照以下步骤修复:

  1. 封闭VS
  2. 删除了common、android、ios项目中的obj/bin文件夹
  3. 重新启动 VS,并执行“重建解决方案”,错误就消失了
© www.soinside.com 2019 - 2024. All rights reserved.