“ResolveLibraryProjectImports”任务意外失败

时间:2017-04-24 09:29:43

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

我有一个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,这是否会产生一些兼容性或跨操作系统问题? 我检查了所有的装配参考,一切正常。

26 个答案:

答案 0 :(得分:34)

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

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

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

答案 1 :(得分:10)

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

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

如果没有这一切,那么在没有可重复的样本和可能的Xamarin日志的情况下,任何人都不可能帮助你。

答案 2 :(得分:8)

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

enter image description here

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

答案 3 :(得分:3)

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

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

答案 4 :(得分:2)

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

以某种方式设置我使用“。”的布局范围时作为分隔符,而不是','

例如

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

因此更改了“。”到“,”解决了问题

答案 5 :(得分:2)

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

答案 6 :(得分:1)

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

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

答案 7 :(得分:1)

不确定是否会帮助您的任何人。对于我的情况,我评论了错误的类(例如那些缺少引用的类),它将开始收集所有内容并重新构建。

答案 8 :(得分:1)

还有问题吗?检查您的名称空间和您的xaml代码。有时候,当您复制/粘贴某些文件时,可能是问题所在。

答案 9 :(得分:1)

这对我有用:

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

希望这会有所帮助。

答案 10 :(得分: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上发布问题,但要找到可靠的存储库可能非常困难。

答案 11 :(得分:1)

我遇到相同的错误,我通常通过关闭所有其他打开的xamarin解决方案来解决此问题,还有另一种方法可以解决此问题->转到taskmanager并找到MSBUILD服务并结束该服务->清理您的解决方案- >重建

答案 12 :(得分:1)

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

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

比较显示droid的项目文件以某种方式引用iOS的项目文件,似乎是Visual Studio的一些bug。所以我恢复了变化,而且都恢复了正常。

答案 13 :(得分:1)

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

答案 14 :(得分:1)

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

答案 15 :(得分:0)

我也有这个错误。在我的情况下,它伴随着Xamarin.Forms.Maps不能正确导入xaml.g.cs文件之一的情况。我所有的using语句正确。 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

答案 16 :(得分:0)

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

Xamarin Compile Time Error

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

enter image description here

答案 17 :(得分:0)

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

答案 18 :(得分:0)

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

尝试将项目移动到另一个位置,例如&#34; C:/&#34; ,或更改项目的名称以获得更简短的内容

答案 19 :(得分:0)

简答:

  1. 将包含解决方案的目录移至桌面
  2. OR

    1. 删除对故障库的引用(在“参考”部分中)
    2. 关闭Visual Studio
    3. 在Windows资源管理器中转到应用程序的项目目录(&#34;项目名称&#34; .sln文件所在的位置)。
    4. 取消隐藏隐藏物品(查看选项卡;检查隐藏物品)
    5. 删除&#34; vs&#34;隐藏文件夹,如果有一个名为&#34; sou&#34;删除它。
    6. 重新启动Visual Studio并启动解决方案
    7. 我面临与OP相同的解决方案。这是OP所遇到的错误的解决方案。我已经解决了下面其他人可能发生的其他错误原因。

      说明: 通常会出现两种不同类型的问题。第一个包括项目文件对于System.IO.reader来说太长导致错误,包括一些文本沿着&#34; file.path太长&#34;

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

答案 20 :(得分: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进行重建。

答案 21 :(得分:0)

我今天也遇到了同样的问题。经过两天的搜索,我找到了解决方法here。问题是Xamarin.Forms库在通过从Visual Studio 2017中选择跨平台的Mobile(Xamarin.Forms)项目模板来创建项目时,并未安装其所有从属Nuget软件包。我必须手动安装升级的从属nuget软件包来构建项目成功。另外,在解决此问题的末尾还删除并添加了Xamarin.Forms。

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

答案 22 :(得分:0)

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

问题是由于上面的分号和如上所述的程序集之间存在空间。差距一缩小,就会编译。

答案 23 :(得分:0)

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

答案 24 :(得分:0)

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

例如:路径为: 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.

答案 25 :(得分:0)

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

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