我在 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上收到错误:
CoreCompile:
/Library/Frameworks/Mono.framework/Versions/5.10.1/lib/mono/4.5/csc.exe / noconfig / nowarn:1701,1702 / nostdlib + / errorreport:prompt / warn:4 /定义:DEBUG; TRACE;的 XAMARIN_ANDROID_v1_0 ; 移动的机器人的 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'(您是否错过了使用指令或 装配参考?) [/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 target(s)) - FAILED。
所以我尝试了你的建议,但是当我尝试保存包时出现错误:
本地文件头已损坏'
你还有其他建议吗?
答案 0 :(得分:3)
您对此问题有任何解释吗?
您可以获取官方文档 here:
描述:使用PackageReference,程序集的根目录 没有特定于目标框架的子文件夹的lib文件夹将被忽略。 NuGet查找与目标框架名字对象匹配的子文件夹 (TFM)对应项目的目标框架并安装 将程序集匹配到项目中。
在这种情况下,NuGet会考虑将此软件包安装到.NET Framework,后者与monoandroid81不兼容。那么你将会出现错误“Package AForge 2.2.5与monoandroid81不兼容”。
要解决此问题,最好的方法是联系AForge NuGet软件包的作者来更新此软件包,或者您也可以将reference dll文件直接添加到您的项目。
此外,如果您仍想使用nuget来管理此软件包,我想为您提供解决此问题的解决方法:
从nuget.org下载此nuget包。
复制下载包,使用.zip
重命名,如aforge.2.2.5 - Copy.nupkg.zip
,然后解压缩。
使用NuGet Package Explorer打开包aforge.2.2.5.nupkg
(从Microsoft商店获取),在lib节点下添加新文件夹MonoAndroid81
,添加存在文件AForge.dll和AForge.xml从复制文件夹aforge.2.2.5 - Copy.nupkg.zip
中保存此nuget包。
将这个新的create nuget包添加到nuget本地feed,然后将此nuget包添加到项目中。不要忘记在添加包之前删除C:\Users\<UserName>\.nuget\packages\aforge
中的nuget包缓存。
希望这有帮助。