“ResolveLibraryProjectImports”任务意外失败

问题描述 投票:29回答:23

我有一个Xamarin项目,它基于MvvmCross。该项目适用于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,这是否会产生一些兼容性或跨操作系统问题?我已检查所有装配参考,所有工作正常。

c# visual-studio xamarin xamarin.android mvvmcross
23个回答
37
投票

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

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

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


1
投票

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


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
投票

这对我有用:

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

希望这可以帮助。


1
投票

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


0
投票

这可能是您的参考/参考组件的问题?

如果查看解决方案资源管理器中每个项目的references文件夹下的内容,则visual studio无法找到,删除并重新添加它们的任何引用(右键单击要添加的引用文件夹)。


0
投票

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


0
投票

简答:

  1. 将包含解决方案的目录移动到桌面

要么

  1. 删除对故障库的引用(在“参考”部分中)
  2. 关闭Visual Studio
  3. 在Windows资源管理器中转到应用程序的项目目录(“Projectname”.sln文件所在的位置)。
  4. 取消隐藏隐藏物品(查看选项卡;检查隐藏物品)
  5. 删除“vs”隐藏文件夹,如果有名为“sou”的文件也删除。
  6. 重新启动Visual Studio并启动解决方案

我正面临与OP相同的解决方案。这是OP所遇到的错误的解决方案。我已经解决了下面其他人可能发生的其他错误原因。

说明:通常会出现两种不同类型的问题。第一个包括System.IO.reader的项目文件太长导致错误,包括“file.path too long”行的一些文本。

导致错误的第二个原因是VS形成了dll的正确名称,但是项目资源的路径不正确。一个例子可能是VS使用“App1 \ bin \ Debug \ net452 \ temp.dll”而不是“App1 \ bin \ Debug \ net1.6 \ temp.dll”。


0
投票

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

尝试将项目移动到“C:/”之类的其他位置,或者更改项目名称以获得更简短的内容


0
投票

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

Xamarin Compile Time Error

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

enter image description here


0
投票

我也有这个错误。在我的情况下,它伴随着Xamarin.Forms.Maps没有正确导入到xaml.g.cs文件之一。我把所有的使用陈述都正确了。 IDE没有显示任何错误,但它一直告诉我Xamarin.Forms没有名称空间Map。它在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


11
投票

您的问题很可能与Xamarin论坛上的this帖子以及this bugzilla条目相关联。没有可重复的样本,我建议你尝试的是:

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

如果没有这一切,如果没有可重复的样本和潜在的Xamarin日志,就不可能有任何人可以帮助你。


0
投票

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


0
投票

如果错误地你有任何语法错误,就像我的情况一样,这种问题也可能出现:ListView中存在两个文本单元格 -

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

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


0
投票

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

此外,在运行两个Visual Studio 2017实例时,创建问题需要一段时间,请确保只有一个实例运行,因为我也遇到过此问题。


0
投票
xmlns:maps="clr-namespace:Xamarin.Forms.Maps; assembly=Xamarin.Forms.Maps"

问题是由于上面的分号和如上所述的组件之间的空间。一旦差距被关闭,它就会编译。


8
投票

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

enter image description here

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


3
投票

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

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

2
投票

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


2
投票

好吧,问题出在我的xaml文件中......

不知何故,在设置布局边界时,我使用'。'作为分隔符而不是','

e.g

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

因此改变'。' '','解决了这个问题


1
投票

当我意外地在解决方案中包含的类库中安装nuget包时,这发生在我身上。我只需要从类库项目中卸载软件包。


1
投票

就我而言,这个问题伴随着另一个与我的xaml有关。 为了让这个错误消失,我必须解决第二个问题。我使用新的默认内容清理该类,然后清理所有项目和解决方案。最后,关闭视觉工作室,打开它,运行项目,它的工作知道.-。


1
投票

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

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

比较显示droid的项目文件在某种程度上是指iOS的项目文件,它似乎是Visual Studio的一些bug。所以我恢复了变化,而且都恢复了正常。

© www.soinside.com 2019 - 2024. All rights reserved.