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

我有一个基于 MvvmCross 的 Xamarin 项目。该项目适用于 iOS 和 Android。我在 Visual Studio 15 中打开了这个项目。我遇到了一些错误,我很快就解决了。有一些错误,被卡住了,即使在谷歌和 Stackoverflow 上搜索后我也无法解决它们。我已经尝试了在 Stackoverflow 上找到的每一种方法,但仍然存在所有剩余的错误。 该项目使用了第 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?如果不是,那是你的问题。

标签: c# visual-studio xamarin xamarin.android mvvmcross


【解决方案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】:

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

  1. 重启 Visual Studio
  2. 打开项目
  3. 清洁溶液
  4. 重建解决方案
  5. 关闭解决方案
  6. 重新打开项目

【讨论】:

    【解决方案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 相关(VPN 客户端需要)

                                通过禁用 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.

                                            【讨论】:

                                              猜你喜欢
                                              • 1970-01-01
                                              • 2019-04-16
                                              • 1970-01-01
                                              • 2021-12-04
                                              • 2018-01-02
                                              • 2013-05-25
                                              • 2017-07-23
                                              • 2016-06-22
                                              • 2017-07-23
                                              相关资源
                                              最近更新 更多