Macos 加载程序集时Xamarin Android异常:System.IO.FileNotFoundException:无法加载程序集';Android.Support.Compat';
我正在为我的公司进行Xamarin.Forms项目,我们计划在IOS和Android上发布我们的应用程序(使用MacBookPro上的Visual Studio社区版)。到目前为止,一切似乎都很好。然后我突然无法在Android项目上构建调试或发布。我得到这个错误:Macos 加载程序集时Xamarin Android异常:System.IO.FileNotFoundException:无法加载程序集';Android.Support.Compat';,macos,xamarin,xamarin.forms,xamarin.android,xamarin.mac,Macos,Xamarin,Xamarin.forms,Xamarin.android,Xamarin.mac,我正在为我的公司进行Xamarin.Forms项目,我们计划在IOS和Android上发布我们的应用程序(使用MacBookPro上的Visual Studio社区版)。到目前为止,一切似乎都很好。然后我突然无法在Android项目上构建调试或发布。我得到这个错误: /Library/Frameworks/Mono.framework/External/xbuild/Xamarin/Android/Xamarin.Android.Common.targets(2,2): Error: Excep
/Library/Frameworks/Mono.framework/External/xbuild/Xamarin/Android/Xamarin.Android.Common.targets(2,2): Error: Exception while loading assemblies: System.IO.FileNotFoundException: Could not load assembly 'Xamarin.Android.Support.Compat, Version=1.0.0.0, Culture=neutral, PublicKeyToken='. Perhaps it doesn't exist in the Mono for Android profile?
File name: 'Xamarin.Android.Support.Compat.dll'
at Java.Interop.Tools.Cecil.DirectoryAssemblyResolver.Resolve (Mono.Cecil.AssemblyNameReference reference, Mono.Cecil.ReaderParameters parameters) [0x00099] in /Users/builder/data/lanes/5147/c2a33d8e/source/xamarin-android/external/Java.Interop/src/Java.Interop.Tools.Cecil/Java.Interop.Tools.Cecil/DirectoryAssemblyResolver.cs:220
at Java.Interop.Tools.Cecil.DirectoryAssemblyResolver.Resolve (Mono.Cecil.AssemblyNameReference reference) [0x00000] in /Users/builder/data/lanes/5147/c2a33d8e/source/xamarin-android/external/Java.Interop/src/Java.Interop.Tools.Cecil/Java.Interop.Tools.Cecil/DirectoryAssemblyResolver.cs:170
at Xamarin.Android.Tasks.ResolveAssemblies.AddAssemblyReferences (Java.Interop.Tools.Cecil.DirectoryAssemblyResolver resolver, System.Collections.Generic.ICollection`1[T] assemblies, Mono.Cecil.AssemblyDefinition assembly, System.Boolean topLevel) [0x0015c] in <593a6fd557984367bb21e275d0fa0659>:0
at Xamarin.Android.Tasks.ResolveAssemblies.Execute (Java.Interop.Tools.Cecil.DirectoryAssemblyResolver resolver) [0x0019c] in <593a6fd557984367bb21e275d0fa0659>:0
/Library/Frameworks/Mono.framework/External/xbuild/Xamarin/Android/Xamarin.Android.Common.targets(2,2):错误:加载程序集时出现异常:System.IO.FileNotFoundException:无法加载程序集“Xamarin.Android.Support.Compat,版本=1.0.0,区域性=中性,PublicKeyToken=”。也许它不存在于Mono for Android配置文件中?
文件名:“Xamarin.Android.Support.Compat.dll”
在/Users/builder/data/lanes/5147/c2a33d8e/source/xamarin-android/external/Java.Interop/src/Java.Interop.Tools.Cecil/Java.Interop/Java.Tools.Cecil/directorySassemblyResolver.cs:220中的Java.Interop.Tools.ceil.Tools.ReaderParameters参数参考[0x00099]中
在/Users/builder/data/lanes/5147/c2a33d8e/source/xamarin-android/external/Java.Interop/src/Java.Interop.Tools.Cecil/Java.Interop.Tools.Cecil/Java.Interop.Tools.Cecil/Java.Tools.Cecil/Java.Interop.Tools.Cecil/directorysassemblymresolver.cs:170中,找到Java.Interop.Tools.Cecil.assemblymesolver
在Xamarin.Android.Tasks.ResolveAssemblys.AddAssemblyReferences(Java.Interop.Tools.Cecil.directorySolver解析器,System.Collections.Generic.ICollection`1[T]Assemblys,Mono.Cecil.AssemblyDefinition assembly,System.Boolean topLevel)[0x0015c]中:0
在Xamarin.Android.Tasks.resolvestassemblies.Execute(Java.Interop.Tools.Cecil.directorySassemblyResolver-resolver)[0x0019c]中:0
我很确定我没有更改任何源文件,直到现在它还在生成中。。
我唯一使用的应用程序Compat是“Xamarin.Android.Support.v7.Compat”
我尝试过的事情:
- 删除所有包并再次添加它们
- 创建新的Xamarin.Forms项目并从git中提取代码-相同的错误
- 安装Xamarin.Android.Support.Compat-收到错误: 您正在尝试将此软件包安装到目标为的项目中 “MonoAndroid,版本=v6.0”,但该软件包不包含任何 与之兼容的程序集引用或内容文件 框架
- 确保我的目标框架与目标版本相同(使用API 23),并且我的最低目标版本是API 19
- 删除Bin和Obj目录,重新启动解决方案并重新构建
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="modernhttpclient" version="2.4.2"
targetFramework="monoandroid60" />
<package id="Plugin.PushNotification" version="1.1.2"
targetFramework="monoandroid60" />
<package id="Rg.Plugins.Popup" version="1.0.4"
targetFramework="monoandroid60" />
<package id="Xam.Plugin.DeviceInfo" version="3.0.2"
targetFramework="monoandroid60" />
<package id="Xam.Plugins.Settings" version="3.1.1"
targetFramework="monoandroid60" />
<package id="Xamarin.Android.Support.Animated.Vector.Drawable"
version="23.3.0" targetFramework="monoandroid60" />
<package id="Xamarin.Android.Support.Design" version="23.3.0"
targetFramework="monoandroid60" />
<package id="Xamarin.Android.Support.v4" version="23.3.0"
targetFramework="monoandroid60" />
<package id="Xamarin.Android.Support.v7.AppCompat" version="23.3.0"
targetFramework="monoandroid60" />
<package id="Xamarin.Android.Support.v7.CardView" version="23.3.0"
targetFramework="monoandroid60" />
<package id="Xamarin.Android.Support.v7.MediaRouter" version="23.3.0"
targetFramework="monoandroid60" />
<package id="Xamarin.Android.Support.v7.RecyclerView" version="23.3.0"
targetFramework="monoandroid60" />
<package id="Xamarin.Android.Support.Vector.Drawable"
version="23.3.0"
targetFramework="monoandroid60" />
<package id="Xamarin.Forms" version="2.4.0.38779"
targetFramework="monoandroid60" />
</packages>
如果需要,我将提供任何日志 所以在启用详细构建输出后,我发现了问题
Xamarin的错误描述非常糟糕,通过调查构建日志,我发现这个缺失的dll是我用于iOS和Android的Plugin.PushNotification NuGet包所必需的。从Android项目中删除对该包的所有引用后,它再次开始构建 今年的大部分时间里,我一直在我的Macbook Pro上从事Xamarin项目,以了解此类问题 如果将运行在OSX上的Xamarin项目复制到Windows或visa,通常会发生这种情况
解决方案总是一样的。列出项目中使用的所有软件包。执行整个软件包的删除操作,然后使用指定的版本号重新干净地重新安装它们。您是否尝试删除BIN和OBJ文件夹并生成?是的,我也尝试过!即使是关闭的解决方案,在删除谁的..您介意共享您的
packages.config
文件后重新启动笔记本电脑吗?@YorkShen MSFT是的!您已更新我的问题您可以尝试使用此解决方案: