【问题标题】:Xamarin.Android: Package XX is not compatible with monoandroid81 (MonoAndroid,Version=v8.1)Xamarin.Android: 包 XX 与 monoandroid81 (MonoAndroid,Version=v8.1) 不兼容
【发布时间】:2018-06-18 08:38:00
【问题描述】:

我在 Windows 上的 Visual Studio 中的 Xamarin.Android 项目中遇到了一个奇怪的行为。

我创建了一个新的 Android 空白项目,并尝试安装 NuGet 包“AForge”(一个数学库),但出现以下错误留言:

包 AForge 2.2.5 与 monoandroid81 不兼容 (MonoAndroid,版本=v8.1)。

在重新启动 Visual Studio 和计算机后,我已经尝试重新创建几个项目,但问题仍然存在。

但是,如果我在 Mac 上通过 Visual Studio for Mac 做同样的事情,我不会遇到同样的问题:软件包安装良好。

另外,我可以在 package.config 文件中看到,该包与 monodroid81 密切相关:

<?xml version="1.0" encoding="utf-8"?>
<packages>
    <package id="AForge" version="2.2.5" targetFramework="monoandroid81" />
</packages>

你对这个问题有什么解释吗?

更新:新问题

嗨@Leo Liu-MSFT,当我遇到一个新问题时,我会回复你。 dll 副本在本地运行良好,但在 AppCenter 上出现错误:

核心编译:
/Library/Frameworks/Mono.framework/Versions/5.10.1/lib/mono/4.5/csc.exe /noconfig /nowarn:1701,1702 /nostdlib+ /errorreport:prompt /warn:4 /define:DEBUG;TRACE;XAMARIN_ANDROID_v1_0;MOBILE;ANDROID;ANDROID_1;ANDROID_2;ANDROID_3;ANDROID_4;ANDROID_5;ANDROID_6;ANDROID_7; ANDROID_8;ANDROID_9;ANDROID_10;ANDROID_11;ANDROID_12;ANDROID_13 ;ANDROID_14;ANDROID_15;ANDROID_16;ANDROID_17;ANDROID_18;ANDROID_19 ;ANDROID_20;ANDROID_21;ANDROID_22;ANDROID_23;ANDROID_24; ANDROID_25;ANDROID_26;ANDROID_27 /reference:/Library/Frameworks/Mono.framework/External/xbuild-frameworks/MonoAndroid/v1.0/Java.Interop.dll /reference:/Users/vsts/.nuget/packages/microsoft.appcenter.analytics/1.7.0/lib/MonoAndroid403/Microsoft.AppCenter.Analytics.Android.Bindings.dll /reference:/Users/vsts/.nuget/packages/microsoft.appcenter.analytics/1.7.0/lib/MonoAndroid403/Microsoft.AppCenter.Analytics.dll /reference:/Users/vsts/.nuget/packages/... Services/AudioService.cs(8,7):错误 CS0246:类型或命名空间 找不到名称“AForge”(您是否缺少 using 指令或 装配参考?) [/Users/vsts/agent/2.136.1/work/1/s/XxxApp/XxxApp.csproj] 完成 建筑工程 “/Users/vsts/agent/2.136.1/work/1/s/XxxApp/XxxApp.csproj” (PackageForAndroid 目标) -- 失败。

所以我尝试了你的建议,但是当我尝试保存包时出现错误:

本地文件头已损坏'

您还有其他建议吗?

【问题讨论】:

  • 您是否安装了最新版本的 Visual Studio 更新? IDE(Visual Studio)窗口的右上角是否有黄色标志?
  • 嗨@Digitalsa1nt 感谢您的反馈。我需要安装最新版本,但我不确定是不是这个原因...
  • 这是值得的,老实说,我在过去已经看到导致包问题。通常是由于库中的依赖关系。

标签: visual-studio xamarin.android mono nuget nuget-package


【解决方案1】:

你对这个问题有什么解释吗?

您可以获取官方文档 here:

描述:使用 PackageReference,程序集位于 没有目标框架特定子文件夹的 lib 文件夹将被忽略。 NuGet 查找与目标框架名字对象匹配的子文件夹 (TFM) 对应项目的目标框架并安装 将程序集匹配到项目中。

在这种情况下,NuGet 会考虑将此包安装到与 monoandroid81 不兼容的 .NET Framework 中。然后你会报错“Package AForge 2.2.5 is not compatible with monoandroid81”。

要解决此问题,最好的方法是联系 AForge NuGet 包的作者更新此包,或者您也可以将引用 dll 文件直接添加到您的项目中

此外,如果您仍想使用 nuget 来管理此软件包,我想为您提供解决此问题的解决方法:

  1. nuget.org下载这个nuget包。

  2. 复制下载包,重命名为.zip,如aforge.2.2.5 - Copy.nupkg.zip,然后解压。

  3. 使用 NuGet 包资源管理器打开包aforge.2.2.5.nupkg(从 Microsoft 商店获取),在 lib 节点下添加新文件夹 MonoAndroid81,从复制文件夹中添加存在文件 AForge.dll 和 AForge.xml aforge.2.2.5 - Copy.nupkg.zip,保存这个 nuget 包。

  4. 将此新的 create nuget 包添加到 nuget 本地提要,然后将此 nuget 包添加到项目中。添加包之前不要忘记删除C:\Users\&lt;UserName&gt;\.nuget\packages\aforge中的nuget包缓存。

希望这会有所帮助。

【讨论】:

  • 嗨 Leo,我已经添加了 .dll,它似乎是这样工作的。在第二次,我会看看我是否可以通过适当的方式修复它。谢谢!
  • 嗨,Leo,我已经更新了描述,因为我遇到了一个新问题。我尝试更新软件包,但没有成功。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-09-07
  • 2018-11-03
  • 1970-01-01
  • 2016-10-21
  • 2021-03-04
  • 2019-02-24
  • 2020-02-25
相关资源
最近更新 更多