xamarin.forms - 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
解决方法是将其从解决方案中排除,但我们将其用于测试目的,这对我们来说不是一个好的选择。
解决方案
- 更新的答案这可以使用 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
推荐阅读
- php - 混淆(Form属性)
- javascript - node.js 从 html 输入值
- jquery - 如果表格的所有行都被隐藏,如何删除表格的边距?
- reactjs - TypeScript 中缺少 Office.js 邮件对象属性
- html - 在 Bootstrap 4 上创建网格
- windows - Windows 机器中的 dir /r 和输出流
- javascript - 使元素可拖动
- android - 我应该在我的 android 应用程序中删除 System.out.println 语句吗
- import - 现在如何在 RxJS 6 的 javascript 中导入`take`?
- caching - 如何使用 cloudflare 缓存谷歌云存储(GCS)?