“ResolveLibraryProjectImports”任务意外失败

Posted

技术标签:

【中文标题】“ResolveLibraryProjectImports”任务意外失败【英文标题】:The "ResolveLibraryProjectImports" task failed unexpectedly 【发布时间】:2017-09-20 22:05:28 【问题描述】:

我有一个基于 MvvmCross 的 Xamarin 项目。该项目适用于 iosandroid。我在 Visual Studio 15 中打开了这个项目。我遇到了一些错误,我很快就解决了。有一些错误,被卡住了,即使在谷歌和 *** 上搜索后我也无法解决它们。我已经尝试了在 *** 上找到的每一种方法,但仍然存在所有剩余的错误。 该项目使用了第 3 方库,例如 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,这是否会产生一些兼容性或跨操作系统问题? 我检查了所有程序集引用,一切正常。

【问题讨论】:

您安装了哪些版本的 Xamarin for Visual Studio、Xamarin.Android 和 Android SDK? xamarin 是最新版本,我已经下载了所有 SDK 版本 你可以尝试卸载和安装受影响的 nuget 包,在这可以 RestSharp restsharp 不是来自 nuget。它是一个已在此解决方案中导入的项目 构建后你的Android项目的bin/Debug目录下是否有RestSharp.dll?如果不是,那是你的问题。 【参考方案1】:

我刚刚在 Visual Studio 2017 中使用了全新的 Xamarin.Forms 应用程序。

根本原因似乎是我让 VS2017 在其默认位置“C:\Users\Dave\Documents\Visual Studio 2017\Projects”中创建项目,这导致多个文件之一现在有一个路径太长了。

我将解决方案移到了我的 D 驱动器的根目录,它构建没有任何问题。

【讨论】:

你应该因为这个解决方案而获得诺贝尔奖!谢谢。 我也试过了,但没有解决我的问题,但我还是这样做了,因为它可能有帮助。 问题几乎总是删除所有目录中的 bin 和 obj 文件夹。按 F5【参考方案2】:

您的问题很可能与 Xamarin 论坛上的 this 帖子和 this bugzilla 条目有关。如果没有可重复的样本,我只能建议您尝试:

为 Visual Studio、Xamarin.Android 和 Xamarin.iOS 更新 Xamarin 到最新的稳定版本 清理和重建 从项目目录中删除所有 binobj 文件夹 重新启动 Visual Studio/您的 PC

如果所有这些都失败了,那么如果没有可重现的样本和可能的 Xamarin 日志,就不可能有人可以帮助您。

【讨论】:

我已经尝试过了,但我会通过删除再试一次,如果可行,我会接受这个答案【参考方案3】:

编辑您的 android 项目文件 (csproj),如下所示

本期话题可指导https://github.com/xamarin/AndroidSupportComponents/issues/51

【讨论】:

这似乎是唯一合适的解决方案。工作得很好。感谢阿尔珀。 ...我只需要添加 元素。 是的,它就像一个隐藏功能:) 天啊!我在这个问题上花了很多时间......非常感谢!【参考方案4】:

有同样的问题。这是我的解决方案

    重启 Visual Studio 打开项目 清洁溶液 重建解决方案 关闭解决方案 重新打开项目

【讨论】:

【参考方案5】:

我正在使用 XAML (.xaml) 和代码隐藏文件 (.xaml.cs)。我的问题是我有相同的页面名称,但在不同的名称空间下。 XAML 和文件背后的代码不匹配。所以最后这是我的 XAML 的问题,因为它当然找不到视图元素。

【讨论】:

【参考方案6】:

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

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

例如

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

因此更改 '.' to ',' 解决了问题

【讨论】:

【参考方案7】:

当我不小心在解决方案中包含的类库中安装了 nuget 包时,我发生了这种情况。我只需要从类库项目中卸载包。

【讨论】:

【参考方案8】:

就我而言,这个问题与我的 xaml 相关。 我必须解决第二个问题才能让这个错误消失。我用新的默认内容清理班级,然后清理所有项目和解决方案。最后,关闭visual studio,打开它,运行项目,它就知道了.-.

【讨论】:

【参考方案9】:

这仍然是一个新问题,毕竟我想尝试将代码转移到更短的路径 - 但是这是很多工作,因为 svn 管理会变得复杂,所以我想首先验证路径是否真的是问题,一种方法是检查 android SDK 的存储位置。我在 mac 上,调查显示 SDK 路径比我的项目路径长。另外,我尝试了一个新项目,并且编译正确。

所以我放弃了换班的想法。相反,我使用 svn 并比较了自上次正确构建以来发生的变化。

对比发现droid的项目文件不知何故引用了iOS的项目文件,似乎是Visual Studio的一些错误。所以我恢复了更改,然后一切都恢复了正常。

【讨论】:

【参考方案10】:

我遇到同样的错误,我通常通过关闭所有其他打开的 xamarin 解决方案来解决这个问题,我还有另一种方法解决了这个问题 -> 转到任务管理器并找到 MSBUILD 服务并结束该服务 -> 清理你的解决方案 - > 重建

【讨论】:

【参考方案11】:

我们也遇到过这种情况,在构建多个项目和非常深/复杂的依赖树(我们的示例有超过 100 个项目)时,这似乎是某种类型的竞争条件。

我们能够解决此问题(除了不断重建)的唯一方法是禁用 Visual Studio 2017 的并行构建能力(工具->选项->项目和解决方案->构建和运行->“1”最大数量并行项目构建)。

问题似乎出在 ResolveLibraryProjectImports.cs (https://github.com/xamarin/xamarin-android/blob/93ddf96f86710ad848d5189858567dd7fe964579/src/Xamarin.Android.Build.Tasks/Tasks/ResolveLibraryProjectImports.cs) 中,很可能存在竞争条件,它们的逻辑缩短了文件名。

对此的测试为零,这意味着很可能存在一些不可靠的代码。

我将尝试更多地挖掘并在 GitHub 上打开一个问题,但找到一个可靠的 repo 可能会非常困难。

【讨论】:

【参考方案12】:

这对我有用:

清洁解决方案 从顶部开始一次构建一个项目 - 不重新构建解决方案 - 一次只构建一个项目 尝试同时删除 Obj 和 bin 文件夹的内容 完成后,在再次运行之前从模拟器或设备中删除项目

希望这会有所帮助。

【讨论】:

【参考方案13】:

还有问题吗?检查您的命名空间和您的 xaml 代码。有时当您复制/粘贴一些文件时,可能会出现问题。

【讨论】:

【参考方案14】:

不确定它是否会对你们中的任何人有所帮助。就我而言,我评论了错误的类(例如那些缺少引用的类),它将开始拾取所有内容并重新构建。

【讨论】:

【参考方案15】:

就我而言,我只是忘记删除 XAML 中的 clicked 事件,该事件在我的代码后面(cs 文件)中不存在。之后,我只是清理并重建。

我认为该错误是由未更新的引用引起的。

【讨论】:

【参考方案16】:

这可能是您的引用/引用程序集的问题?

如果您在解决方案资源管理器中查看每个项目的引用文件夹下,Visual Studio 找不到的任何引用,删除并重新添加它们(右键单击引用文件夹添加)。

【讨论】:

【参考方案17】:

我已经面对这个问题一千次了,当你创建一个新项目时,这实际上是一件非常简单的事情,Visual Studio 在 C:Drive 的默认文件夹中创建它,你所要做的就是将你的项目移到其他驱动器中D:, E: 确保将其保存在驱动器的根目录中,即如果将其移动到 D: 中,则将其放置为 D/Project/solutionFile

【讨论】:

【参考方案18】:

问题来了: System.IO.PathTooLongException:指定的路径、文件名或两者都太长。完全限定的文件名必须少于 260 个字符,目录名必须少于 248 个字符。

尝试将您的项目移动到另一个位置,例如 "C:/" ,或者将项目名称更改为更简短的名称

【讨论】:

【参考方案19】:

我遇到了同样的问题,上面的解决方案都没有奏效。在注意到密码学列表中的错误后,我知道它必须与启用 FIPS 相关(*** 客户端需要)

通过禁用 FIPS 并重新启动 Visual Studio,问题得到解决。

【讨论】:

【参考方案20】:

我也有这个错误。在我的情况下,它伴随着Xamarin.Forms.Maps 没有正确导入xaml.g.cs 文件之一。我的所有使用语句都是正确的。 IDE 没有显示任何错误,但它一直告诉我Xamarin.Forms 没有名称空间映射。它在MapPage.xaml.g.cs 中生成为Xamarin.Forms.Map 而不是Xamarin.Forms.Maps.Map,我无法手动强制修复。事实证明,建议的地图xmlns:maps 导致了问题。 IDE 告诉我使用"http://xamarin.com/schemas/2014/forms",但正确的命名空间是"clr-namespace:Xamarin.Forms.Maps;assembly=Xamarin.Forms.Maps"。在我改变这个之后,它能够建立我的App1.dll

【讨论】:

【参考方案21】:

这就是我得到错误的原因。在 StackLayout 中,我输入了一个 Padding 属性,并用空格而不是逗号分隔 4 位数字。 为了找到错误,我不得不单独注释掉 XAML 控件并重新构建以隔离错误所在,最终我找到了问题所在。 所以基本上这是我收到的关于我的 XAML 代码中的语法错误的错误消息! 在任何其他语言中,我都希望知道错误是什么,以便我可以在几秒钟内修复它。但这花了我几个小时 - 虽然下次我知道该怎么做。

【讨论】:

【参考方案22】:

如果您错误地遇到任何语法错误,例如我的情况,也可能会出现这种问题:ListView 中存在两个文本单元格 -

<ListView x:Name="ProductsView">
    <ListView.ItemTemplate>
        <DataTemplate>
            <TextCell Text="Binding ProductId" />
            <TextCell Text="Binding ProductDescription" />
        </DataTemplate>
    </ListView.ItemTemplate>
</ListView>

我浏览了有关此问题的其他帖子,发现由于存在语法错误而发生了相同的问题,VS 没有直接报告。所以找这个,否则,重新安装兼容版本的 xamarin.forms -> 清理解决方案 -> 通过重新打开 VS 重建。

【讨论】:

【参考方案23】:

我今天也遇到了同样的问题。经过两天的搜索,我找到了解决方案here。问题是 Xamarin.Forms 库在第一次通过从 Visual Studio 2017 选择跨平台 Mobile(Xamarin.Forms) 项目模板创建项目时未安装其所有依赖 Nuget 包。我必须手动安装升级后的依赖 nuget 包来构建项目成功。最后还删除并添加了 Xamarin.Forms 以解决该问题。

另外,当 Visual Studio 2017 的两个实例运行时会产生一些问题,请确保只有一个实例在运行,因为我也遇到了这个问题。

【讨论】:

【参考方案24】:
xmlns:maps="clr-namespace:Xamarin.Forms.Maps; assembly=Xamarin.Forms.Maps"

问题是因为上面的分号和上述程序集之间的空格。一旦差距关闭,它就会编译。

【讨论】:

【参考方案25】:

缩短解决方案的路径(文件夹名称)为我解决了问题。

例如:路径是: C:\Users\Username\Downloads\Compressed\ListView-GettingStarted-in-Xamarin-Forms-master\ListView-GettingStarted-in-Xamarin-Forms-master\GettingStarted

我将其更改为: C:\Users\HelloKali\Downloads\Compressed\3\2\1.

【讨论】:

以上是关于“ResolveLibraryProjectImports”任务意外失败的主要内容,如果未能解决你的问题,请参考以下文章