加载组件时Xamarin Android异常:system.io.filenotfoundexception:无法加载汇



我正在为公司的Xamarin.Forms项目工作,我们计划在iOS和Android上发布我们的应用程序(使用MacBook Pro上的Visual Studio Community Edition)。到目前为止,一切似乎都还可以。然后突然我无法在Android项目上进行调试或发布。我遇到了这个错误:

/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

我很确定我还没有更改任何源文件,直到现在。我使用的唯一应用程序是" xamarin.android.support.v7.compat"。

我尝试的东西:

  • 删除所有软件包并再次添加它们。
  • 创建新鲜的Xamarin.Forms项目和从GIT中拔出代码 - 相同错误
  • 安装xamarin.android.support.compat-错误我得到:

    您正在尝试将此软件包安装到针对目标的项目中 'monoandroid,版本= v6.0',但该软件包不包含任何 与之兼容的汇编引用或内容文件 框架。

  • 确保我的目标框架与目标版本相同(使用API 23),并且我的最低目标版本是API19。
  • 删除bin和obj目录,重新启动解决方案并再次构建。

我正在使用xamarin.forms 2.4.0.38779。我尝试删除所有软件包并更新最新表格 - 仍然有同样的错误。

这是packages.config for droid项目:

<?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的PushNotification Nuget软件包所要求的。从Android项目中删除对此软件包的所有引用后,它再次开始构建!

我一直在MacBook Pro上从事Xamarin Projects,以了解今年的大部分时间,以了解这类问题。

如果您将在OSX上运行的Xamarin项目复制到Windows或Visa。

,这通常会发生。

解决方案始终相同。列出项目中所有使用的软件包。全面删除包装,并用其指定的版本编号再次清洁安装。

最新更新