【问题标题】:Xamarin.Android.Support.Fragment, Version=1.0.0.0, Culture=neutral, PublicKeyToken='. Perhaps it doesn't exist in the Mono for Android profile?Xamarin.Android.Support.Fragment,版本=1.0.0.0,文化=中性,PublicKeyToken='。也许它在 Mono for Android 配置文件中不存在?
【发布时间】:2017-12-22 04:37:05
【问题描述】:

我尝试使用 Xamarin.Android.Support 库版本 25.3.1,但由于一个错误,我决定降级回我以前的版本 23.3.0。降级后,我在下面收到此错误消息。无论我尝试了什么,我都无法摆脱它。我试图删除所有 bin、obj、tmp 等文件夹。重启VS2015,清理,重建...

    Severity    Code    Description Project File    Line    Suppression State
    Error       Exception while loading assemblies: System.IO.FileNotFoundException: Could not load assembly 
'Xamarin.Android.Support.Fragment, Version=1.0.0.0, Culture=neutral,
 PublicKeyToken='. Perhaps it doesn't exist in the Mono for Android profile?
    File name: 'Xamarin.Android.Support.Fragment.dll'
       at Java.Interop.Tools.Cecil.DirectoryAssemblyResolver.Resolve(AssemblyNameReference reference, ReaderParameters parameters)
       at Xamarin.Android.Tasks.ResolveAssemblies.AddAssemblyReferences(DirectoryAssemblyResolver resolver, ICollection`1 assemblies, AssemblyDefinition assembly, Boolean topLevel)
       at Xamarin.Android.Tasks.ResolveAssemblies.Execute(DirectoryAssemblyResolver resolver)       

我在 package.config 文件中发现了一个小改动。全部在下面 targetFramework="monoandroid71" 现在。在升级-降级之前,它们是 targetFramework="monoandroid70",我替换了它们 manulla 但是,它根本没有帮助。我该如何解决这个问题?

  <package id="Xamarin.Android.ShortcutBadger" version="1.1.809" targetFramework="monoandroid71" />
  <package id="Xamarin.Android.Support.Animated.Vector.Drawable" version="23.3.0" targetFramework="monoandroid71" />
  <package id="Xamarin.Android.Support.CustomTabs" version="23.3.0" targetFramework="monoandroid71" />
  <package id="Xamarin.Android.Support.Design" version="23.3.0" targetFramework="monoandroid71" />
  <package id="Xamarin.Android.Support.v4" version="23.3.0" targetFramework="monoandroid71" />
  <package id="Xamarin.Android.Support.v7.AppCompat" version="23.3.0" targetFramework="monoandroid71" />
  <package id="Xamarin.Android.Support.v7.CardView" version="23.3.0" targetFramework="monoandroid71" />
  <package id="Xamarin.Android.Support.v7.MediaRouter" version="23.3.0" targetFramework="monoandroid71" />
  <package id="Xamarin.Android.Support.v7.Palette" version="23.3.0" targetFramework="monoandroid71" />

我的设置是什么样的

参考资料:

更新: 我已经重新安装了所有 nugetpackages 并成功在 1 台电脑上运行 android 项目,但有趣的是同一个项目没有在另一台电脑上运行。它返回不同但相似的错误。

Severity    Code    Description Project File    Line    Suppression State
Error       The "ResolveLibraryProjectImports" task failed unexpectedly.
System.IO.FileNotFoundException: Could not load assembly 'myApp, Version=0.0.0.0, Culture=neutral, PublicKeyToken='. Perhaps it doesn't exist in the Mono for Android profile?
File name: 'myApp.dll'
   at Java.Interop.Tools.Cecil.DirectoryAssemblyResolver.Resolve(AssemblyNameReference reference, ReaderParameters parameters)
   at Java.Interop.Tools.Cecil.DirectoryAssemblyResolver.Resolve(String fullName, ReaderParameters parameters)
   at Java.Interop.Tools.Cecil.DirectoryAssemblyResolver.Resolve(String fullName)
   at Java.Interop.Tools.Cecil.DirectoryAssemblyResolver.GetAssembly(String fileName)
   at Xamarin.Android.Tasks.ResolveLibraryProjectImports.Extract(DirectoryAssemblyResolver res, ICollection`1 jars, ICollection`1 resolvedResourceDirectories, ICollection`1 resolvedAssetDirectories, ICollection`1 resolvedEnvironments)
   at Xamarin.Android.Tasks.ResolveLibraryProjectImports.Execute()
   at Microsoft.Build.BackEnd.TaskExecutionHost.Microsoft.Build.BackEnd.ITaskExecutionHost.Execute()
   at Microsoft.Build.BackEnd.TaskBuilder.<ExecuteInstantiatedTask>d__26.MoveNext() myApp.Droid     

【问题讨论】:

    标签: xamarin xamarin.android xamarin.forms


    【解决方案1】:

    我的问题是我将 xamarin 表单更新为 2.5.0.121934, 然后,它显示错误“加载程序集时出现异常:System.IO.FileNotFoundException:无法加载程序集 'Xamarin.Android.Support.Fragment,版本 = 1.0.0.0,文化 = 中性, PublicKeyToken='。也许它在 Mono for Android 配置文件中不存在?”

    所以我将我的 xamarin.form 降级到 2.3.4.247,然后它构建成功。

    【讨论】:

    【解决方案2】:

    这里的最佳选择是从您的 Xamarin.Android 项目中卸载所有 Xamarin 和 Android 包。然后再次安装 Xamarin.Forms,它会添加正确的依赖项。

    或者,尝试下载

    Install-Package Xamarin.Android.Support.Fragment
    

    【讨论】:

    • 我已经做过几次了,但不幸的是它没有帮助。不知道如果不创建新项目我还能做什么
    • 当你卸载这些包时,如果你展开引用部分,是否还有这些包的引用。或者任何显示警告标志的?
    • 它们在我看来都很好。我用屏幕截图更新了我的问题
    • 如果您以 Android 7.0 为目标,在 Compile using Android Version: 下拉菜单中是否有效。
    • 尝试下载 nuget 包 Xamarin.Android.Support.Fragment
    【解决方案3】:

    遗憾的是,此处描述的步骤对我没有帮助。但我找到了原因。

    第一步是确定哪些包要使用support.Fragment包。

    为此,请将您的 MsBuild 输出设置为诊断。 (工具 => 选项 => 项目和解决方案 => 构建和运行)

    然后构建,一旦报告错误,在日志中找到 support.fragment。

    就我而言,是 Acr.Userdialogs 试图获取 support.Fragment 框架。

    依赖“Xamarin.Android.Support.Fragment,版本=1.0.0.0,文化=中性,PublicKeyToken=null”。 (任务 ID:415)

    无法解析此引用。找不到程序集“Xamarin.Android.Support.Fragment,Version=1.0.0.0,Culture=neutral,PublicKeyToken=null”。检查以确保该程序集存在于磁盘上。

    如果您的代码需要此引用,您可能会遇到编译错误。 (任务 ID:415)

    “Acr.UserDialogs,版本=1.0.0.0,文化=中性,处理器架构=MSIL”要求。 (任务 ID:415)

    从这里开始,就是降级 Acr.Userdialogs 框架,直到这种依赖消失。

    希望这会有所帮助:-)

    【讨论】:

    【解决方案4】:

    我重命名了标题,因为我有 2 个以下问题,它们看起来确实相似,并且都只与 Android 项目有关。

    1. 第一个抱怨 support.Fragment 在 24.x.x 版本以上可用,但我使用的是 23.0.x。这可能是因为从 25.3.1 版本降级造成的。无论我尝试什么,清理 bin、obj、temp、rebuild 都没有帮助。我使用命令Update-Package –reinstall重新安装解决方案中的所有 NuGet 包。这对我的一台 PC 有帮助。但在我的另一台电脑上,我遇到了问题中的第二个错误。

    2. 下面的错误信息确实是在告诉你在 android 下找不到 PCL 项目。如果您查看输出窗口,它会告诉您在 Debug/Bin 文件夹中找不到它。当我查看我的 Bin 文件夹时,我发现没有生成任何内容。

      “ResolveLibraryProjectImports”任务意外失败。 System.IO.FileNotFoundException:无法加载程序集“myApp,版本=0.0.0.0,文化=中性,PublicKeyToken=”。也许它在 Mono for Android 配置文件中不存在? 文件名:'myApp.dll'

    看起来这是由使用 .net 标准 1.0 的 NuGet 包引起的。我的 PCL 项目仍在使用 PCL 配置文件。如果您拥有 Adam Pedley 的 article 中所述的 .Net Core 1.0 库,这通常没有问题。它在我的另一台计算机上的工作方式是因为我安装了 VS2017。 VS2017安装已经自动安装了.Net Core。但我正在研究 VS2015,它需要单独安装。

    我希望这可以帮助其他遇到问题的人。

    【讨论】:

    • 除了上面的解决方案,今天我强烈建议您转换您的 .net 标准 2.0,以避免此类问题,因为 PCL 总是会出现不同的错误并影响您的工作效率。
    【解决方案5】:

    不是一个明确的答案,但由于这种类型的依赖问题似乎在多个地方蔓延,我终于找到了一种方法,至少可以看到重叠在哪里。请参阅以下屏幕截图。只需使用汇编资源管理器“搜索”功能在错误消息中定位命名空间。然后单击命名空间,它会弹出重复的条目及其 dll 位置。

    【讨论】:

    • 确实很有趣。感谢您让我知道,但我解决了支持库的问题,现在有了不同的支持库。不确定您的解决方案是否适用?
    【解决方案6】:

    对于可能遇到此问题的任何人,我的诀窍是丢弃我的 app/app/obj/Debug/app.Core.csprojFileListAbsolute.txtapp/app.Droid/Resources/Resource.Designer.cs 文件中的所有更改,然后删除 binobj 文件夹的内容,最后重建项目。

    【讨论】:

      猜你喜欢
      • 2012-09-22
      • 1970-01-01
      • 2018-08-19
      • 1970-01-01
      • 2015-02-15
      • 1970-01-01
      • 1970-01-01
      • 2017-06-10
      • 1970-01-01
      相关资源
      最近更新 更多