首页 > 解决方案 > Azure Pipelines Xamarin.Forms iOS 构建失败并出现错误 MSB4057:项目中不存在目标“_IsProjectRestoreSupported”

问题描述

我们有适用于 iOS 和 UWP 项目的 Xamarin.Forms 解决方案。我们使用 Azure 管道来构建 iOS 项目。直到昨天一切正常。现在构建在 NuGet 还原步骤失败并出现错误:

##[错误] nuget 命令失败,退出代码(1)和错误(/Users/runner/work/1/s/"MyProjectName.UWP".csproj : 错误 MSB4057:目标“_IsProjectRestoreSupported”不存在于项目。

我们可以看到,在 Mac OS 构建主机上尝试为 UWP 项目还原 NuGet 包时会出现问题。图片:macOS-11

解决方法是将其从解决方案中排除,但我们将其用于测试目的,这对我们来说不是一个好的选择。

标签: xamarin.formsxamarin.iosazure-pipelines

解决方案


  • 更新的答案这可以使用 MSBuild 任务来解决,如下所述。但是,在我的情况下,这仍然会导致相同的错误。经过管道调查。根本原因已确定:在 MSBuild@1 和 XamariniOS@2 任务中 ,您应该针对特定的 iOS 项目而不是解决方案文件,如下所示在此处输入图像描述

" - 任务:MSBuild@1 输入:解决方案:'PathToIosProject/myproject.iOS.csproj' 配置:'$(BuildConfiguration)' msbuildArguments:/t:restore

" - 任务:XamariniOS@2 输入:solutionFile:PathToIosProject/myproject.iOS.csproj' 配置:'$(BuildConfiguration)' packageApp:true signingIdentity:$(APPLE_CERTIFICATE_SIGNING_IDENTITY)

  • 旧答案

我们已经设法解决了这个问题。它的根本原因似乎是对 MacOS 管道构建代理中的单声道框架的更新。为了修复它,我们需要一个脚本来下载和安装旧版本的 mono 框架,作为构建管道的第一步,如下所示: 链接到管道任务照片

这是任务中使用的 bash 脚本的代码:

#!/bin/bash 设置 -ex

MONO_MACOS_PKG_DOWNLOAD_URL='https://download.mono-project.com/archive/6.12.0/macos-10-universal/MonoFramework-MDK-6.12.0.100.macos10.xamarin.universal.pkg'

mkdir -p /tmp/mono-install cd /tmp/mono-install

单--版本

wget -q -O ./mono-installer.pkg "$MONO_MACOS_PKG_DOWNLOAD_URL"

须藤安装程序-pkg ./mono-installer.pkg -target /

单--版本

ls -alh /Library/Frameworks/Mono.framework/Versions/Current


推荐阅读