Xamarin.Forms编译报错:GetTasksAbi任务加载失败求助
我来帮你解决这个头疼的Xamarin构建问题!你遇到的GetTasksAbi任务加载失败,核心原因是.NET Standard 2.0的依赖没处理好,结合你已经重装VS的情况,试试下面这些针对性的解决方案:
确认Visual Studio 2017版本达标:
Xamarin.Forms 3.0.0要求VS2017必须是15.3及以上版本(这个版本才完整支持.NET Standard 2.0)。你可以打开VS2017,点击帮助->关于Microsoft Visual Studio查看版本号,如果低于15.3,直接更新到VS2017的最终稳定版15.9.x——旧版本的VS对.NET Standard的支持有缺陷,这很可能是问题根源。彻底清理并重新还原NuGet包:
有时候NuGet缓存损坏不是简单删文件夹就能解决的,按步骤来:- 右键解决方案,选择
清理解决方案; - 删除解决方案根目录的
packages文件夹,以及每个项目下的bin和obj文件夹; - 右键解决方案,选择
还原NuGet包; - 重启VS后再尝试构建项目。
- 右键解决方案,选择
检查.NET Standard 2.0运行时是否安装:
打开控制面板->程序和功能,找.NET Core Runtime 2.x相关组件,确认它们已经安装。如果没找到,下载对应版本的.NET Core 2.x runtime安装包(要匹配VS2017的版本),安装后重启电脑再试。升级Xamarin.Forms到稳定版本:
你当前用的Xamarin.Forms 3.0.0.446417是比较早期的版本,存在不少兼容性bug。右键解决方案里的每个项目,选择管理NuGet程序包,把Xamarin.Forms升级到3.6.x或更高的稳定版(确保所有项目的版本完全一致),新版本会修复很多旧版本的依赖问题。调整Android项目的目标框架:
右键你的Android项目(App2.Android),选择属性->应用程序,把目标Android版本设置为Android 8.0(API级别26)或更高。Xamarin.Forms 3.0对Android最低要求是API 19,但目标到更高版本能规避很多.NET Standard相关的兼容性问题。手动添加程序集绑定重定向:
如果上面的方法都没用,在Android项目里新建或修改App.config文件,添加以下内容强制绑定netstandard的版本:<configuration> <runtime> <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> <dependentAssembly> <assemblyIdentity name="netstandard" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" /> <bindingRedirect oldVersion="0.0.0.0-2.0.0.0" newVersion="2.0.0.0" /> </dependentAssembly> </assemblyBinding> </runtime> </configuration>
内容的提问来源于stack exchange,提问作者Regardt van Heerden

