“ResolveLibraryProjectImports”任务意外失败

32
我有一个基于MvvmCross的Xamarin项目,适用于iOS和Android。我在Visual Studio 15中打开了这个项目,遇到了一些错误,其中一些我很快解决了。但还有一些错误卡住了我,即使在Google和Stackoverflow上搜索后也无法解决。我已经尝试了Stackoverflow上找到的每种方法,但是仍然存在所有剩余的错误。该项目使用RestSharp和BoxApi.V2等第三方库。
我会在下面发布我的错误日志。
Severity    Code    Description Project File    Line    Suppression State
Error       The "ResolveLibraryProjectImports" task failed unexpectedly.
System.IO.FileNotFoundException: Could not load assembly 'RestSharp(Android), Version=0.0.0.0, Culture=neutral, PublicKeyToken='. Perhaps it doesn't exist in the Mono for Android profile?
File name: 'RestSharp(Android).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() BoxApi.V2 (Android)

这个错误在解决方案中包含的所有项目中都重复出现。因此,我会多次遇到这个错误。

我还想补充一点,这个项目之前是在MAC上构建的,而我现在使用的是Windows,这会导致某些兼容性或跨操作系统问题吗? 我已经检查了所有程序集引用,都正常工作。


您安装了哪些版本的Visual Studio for Xamarin、Xamarin.Android和Android SDK? - Luke Pothier
Xamarin是最新版本,我已经下载了所有SDK版本。 - Zaeem Sattar
你可以尝试卸载并重新安装受影响的NuGet包,例如RestSharp。 - Plac3Hold3r
构建完成后,您的Android项目的bin/Debug目录中是否有RestSharp.dll?如果没有,那就是问题所在。 - Luke Pothier
dll已经存在,并且它的程序集引用也已添加到项目中。 - Zaeem Sattar
显示剩余5条评论
25个回答

39

我刚在Visual Studio 2017中创建了一个全新的Xamarin.Forms应用程序,就遇到了这个问题。

根本原因似乎是我让VS2017在其默认位置'C:\Users\Dave\Documents\Visual Studio 2017\Projects'创建项目,这导致一个或多个文件的路径过长。

把解决方案移到我的D驱动器的根目录下后,它可以成功构建。


2
你应该因这个解决方案获得诺贝尔奖!谢谢。 - Second Person Shooter
我也尝试了这个方法,但它并没有解决我的问题,不过我还是试了一下,因为它可能有所帮助。 - kttii
1
问题几乎总是删除所有目录中的bin和obj文件夹。按F5键重新加载。 - Nick Turner

11
您的问题很可能与 Xamarin 论坛上的 this 帖子和 this bugzilla 条目相关。如果没有可重现的示例,我建议您尝试以下操作:
  • 将 Visual Studio、Xamarin.Android 和 Xamarin.iOS 更新到最新稳定版本
  • 清理并重新构建
  • 从项目目录中删除所有 binobj 文件夹
  • 重新启动 Visual Studio/计算机

如果所有这些都失败了,没有人能在没有可重现的示例和您的 Xamarin 日志的情况下帮助您。


1
我已经尝试过了,但我会通过删除再次尝试,如果它有效,我会接受这个答案。 - Zaeem Sattar

11

这似乎是唯一正确的解决方案。非常有效。感谢Alper。...我只需要添加<UseShortFileNames>元素。 - pdschuller
{btsdaf} - Alper Ebicoglu
哎呀!我花了这么多时间解决这个问题... 非常感谢! - Denis Gordin

5

遇到同样的问题。这是我的解决方法:

  1. 重启Visual Studio
  2. 打开项目
  3. 清理解决方案
  4. 重新生成解决方案
  5. 关闭解决方案
  6. 重新打开项目

2

我正在使用XAML(.xaml)和对应的代码文件(.xaml.cs)。我的问题是,我有相同的页面名称,但在不同的命名空间下。XAML和代码文件无法匹配。最终问题出现在我的XAML上,因为它找不到视图元素。


2

对我来说,问题在我的xaml文件中...

在设置布局边界时,我不小心使用了“.”作为分隔符,而不是“,”

例如:

AbsoluteLayout.LayoutBounds="0.5.0.3,1,0.3" 应该改为 AbsoluteLayout.LayoutBounds="0.5,0.3,1,0.3"

因此,将“.”更改为“,”解决了问题。


1
这对我有用:
  • 清理解决方案
  • 从顶部开始逐个构建项目 - 不是重新构建解决方案 - 只是一个项目一个项目地构建
  • 尝试删除Obj和bin文件夹的内容
  • 完成后在模拟器或设备中删除项目,然后再次运行它
希望这可以帮助您。

1

仍然存在问题?请检查您的命名空间和XAML代码。有时候当您复制/粘贴文件时,这可能是问题所在。


1
我们也遇到了这个问题,当构建多个项目和一个非常深/复杂的依赖树时(我们的示例有超过100个项目),似乎存在某种类型的竞态条件。
除了不断重建之外,我们唯一能够解决这个问题的方法是禁用Visual Studio 2017的并行构建功能(工具->选项->项目和解决方案->生成和运行->“1”最大并行项目构建数)。
问题似乎在ResolveLibraryProjectImports.cs(https://github.com/xamarin/xamarin-android/blob/93ddf96f86710ad848d5189858567dd7fe964579/src/Xamarin.Android.Build.Tasks/Tasks/ResolveLibraryProjectImports.cs)中,他们的逻辑可能存在竞态条件以缩短文件名。
这方面没有任何测试,这意味着很可能存在一些不可靠的代码。
我将尝试更深入地挖掘并在GitHub上开启一个问题,但找到一个可靠的存储库可能会非常困难。

1

不确定这是否会对你们中的任何人有所帮助。对于我的情况,我注释掉了错误的类(例如那些缺少引用的类),然后它就开始收集所有信息并重新构建。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接