错误MSB4062:无法从程序集加载“Xamarin.Forms.Build.Tasks.GetTasksAbi”任务

时间:2018-05-09 08:58:56

标签: visual-studio xamarin xamarin.forms nuget

将软件包“Xamarin.Forms”和“Xamarin.Forms.Maps”更新到最新版本,即“3.0.0.446417”后,项目将不再构建,我收到此错误:

    C:\Users\[MyUser]\.nuget\packages\xamarin.forms\3.0.0.446417\build\netstandard2.0\Xamarin.Forms.targets(35,3):
error MSB4062: The "Xamarin.Forms.Build.Tasks.GetTasksAbi" task could not be loaded from the assembly
C:\Users\[MyUser]\.nuget\packages\xamarin.forms\3.0.0.446417\build\netstandard2.0\Xamarin.Forms.Build.Tasks.dll.
Could not load file or assembly 'netstandard, Version=2.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51' or one of its dependencies.
The system cannot find the file specified. Confirm that the <UsingTask> declaration is correct, that the assembly and all its dependencies are available, and that the task contains a public class that implements Microsoft.Build.Framework.ITask.

错误是指文件的这个位置 Xamarin.Forms.Targets

<XamlGTask
    XamlFiles="@(EmbeddedResource)" Condition="'%(Extension)' == '.xaml' AND '$(DefaultLanguageSourceExtension)' == '.cs'"
    Language = "$(Language)"
    AssemblyName = "$(AssemblyName)"
    OutputPath = "$(IntermediateOutputPath)">
    <Output ItemName="FilesWrite" TaskParameter="GeneratedCodeFiles" />
    <Output ItemName="Compile" TaskParameter="GeneratedCodeFiles" />
</XamlGTask>

XamlGTask的下划线标有警告:

Task 'XamlGTask' is not defined

到目前为止我所做的是清理整个解决方案,删除obj / bin文件夹以及从Package Manager设置中清除所有Nuget缓存,但它们都没有帮助。

7 个答案:

答案 0 :(得分:10)

  

错误MSB4062:无法从程序集加载“Xamarin.Forms.Build.Tasks.GetTasksAbi”任务

要解决此问题,您一定要确保所有项目都引用相同版本的软件包Xamarin.Forms

Solution Explorer右键单击解决方案节点,然后选择Manage NuGet Packages for solution...。选择Consolidate选项卡,然后单击Xamarin.Forms NuGet包,确认所有项目使用相同版本。如果没有,请将所有版本更新为相同版本。

此外,有人说安装.NET Framework 4.7.1有助于解决这个问题,你可以检查它是否有帮助。

认证:https://forums.xamarin.com/discussion/comment/324869#Comment_324869

注意:如果您无法成功安装.net framework 4.7.1,请尝试将Windows 10更新到最新版本。谢谢@Vahid。

希望这有帮助。

答案 1 :(得分:0)

尝试以上所有方法,但均失败。我提到我使用的是VS2017 v15.7.5。

如果没有任何效果,请尝试以下操作:

  • 关闭VS-所有实例

  • 在不加载解决方案的情况下重新打开VS

  • 转到工具->选项-> NuGet程序包管理器->程序包管理器设置-> NuGet程序包管理器->常规->清除所有NuGet缓存

  • 加载解决方案并进行构建。

对我有用!

答案 2 :(得分:0)

我正在将VS 2017与Xamarin Forms一起使用。这些是我为解决此错误而采取的步骤:

  1. 确保您同时运行Android和iOS的Xamarin.Forms相同版本
  2. 关闭解决方案
  3. 打开VS->工具->选项-> Nuget软件包管理器->清除NuGet缓存
  4. 在Windows资源管理器中打开解决方案
  5. Shift Delete vs文件夹
  6. Shift删除Android和iOS中的bin和obj文件夹
  7. 重新启动计算机
  8. 重新启动后,打开VS,让它自动还原NuGet软件包(这可能需要一些时间)
  9. 清洁溶液
  10. 重建解决方案

答案 3 :(得分:0)

我遇到了这个问题,解决方案是必须执行的Windows更新的挂起重启。非常烦人。

答案 4 :(得分:0)

解决方案1:

有时它有助于用taskmanager杀死MsBuild进程。 (按Ctrl + Shift + Esc)

解决方案2:

清洁溶液

关闭Visual Studio

删除所有obj / bin文件夹

(有时需要删除软件包文件夹)

重新启动Visual Studio并重新构建

答案 5 :(得分:0)

最近我遇到了同样的问题,最简单的解决方案是安装 .net Framework 4.7.1 。这是因为netstandard2需要 4.7.1!

参考:https://github.com/xamarin/Xamarin.Forms/issues/2667

答案 6 :(得分:0)

这对我有用:

步骤1:使用您正在使用的解决方案关闭Visual Studio。

第2步:删除解决方案文件夹中的.vs文件夹(.vs文​​件夹通常处于隐藏状态)

第3步:使用Visual Studio重新打开您的解决方案

就这样。