首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Azure管道Xamarin.Forms iOS构建失败,错误MSB4057:项目中不存在目标"_IsProjectRestoreSupported“

Azure管道Xamarin.Forms iOS构建失败,错误MSB4057:项目中不存在目标"_IsProjectRestoreSupported“
EN

Stack Overflow用户
提问于 2021-11-03 08:45:58
回答 2查看 1.7K关注 0票数 7

我们有Xamarin.Forms解决方案与iOS和UWP项目。我们使用Azure管道来构建iOS项目。直到昨天,一切都很好。现在,构建在NuGet还原步骤中失败,错误如下:

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

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

解决办法是将它排除在解决方案之外,但我们正在使用它进行测试,这对我们来说不是一个好的选择。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-11-04 11:52:54

昨天,我们的iOS (macos-11)和安卓(MacOS10.15)管道也遇到了同样的问题。

mono的21180问题似乎是根本原因,在拉请求中也引用这个问题来更新MacOs虚拟环境的mono版本。对于此工作流测试,我们给了msbuild一个机会,它起作用了。

解决方案:

我们不使用NuGet还原,而是直接使用MSBuild。

代码语言:javascript
复制
- task: MSBuild@1
  inputs:
    solution: 'App.sln'
    configuration: 'Release'
    msbuildArguments: /t:restore

查看日志文件,MSBuild将忽略UWP项目。这就是NuGet在旧版本6.12.0.125中的行为。忽略UWP-Project是没有问题的,因为它只能构建在windows环境上。

在节点1(还原目标)上进行"/Users/runner/work/1/s/App.sln“项目。ValidateSolutionConfiguration:构建解决方案配置“Release”。/Library/Frameworks/Mono.framework/Versions/6.12.0/lib/mono/msbuild/Current/bin/NuGet.targets(315,5):警告:跳过项目'/Users/runner/work/1/s/App/App.UWP/App.UWP.csproj'.的还原项目文件可能无效或缺少还原所需的目标。/用户/runner/work/1/s/App.sln

一些附加信息:

NuGet还原任务使用msbuild查找所有引用的包。如果失败,它将使用packages.config文件作为后备,管道步骤不会失败。

相反,我们在Android &iOS的构建步骤中出现了一个错误:

error NETSDK1004:未找到资产文件NETSDK1004。运行NuGet包还原以生成此文件。

票数 6
EN

Stack Overflow用户

发布于 2021-11-03 08:56:02

  • 更新后的答案可以使用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框架的更新。为了修复它,我们需要一个脚本来下载和安装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-安装cd /tmp/mono-install

单版

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

sudo安装程序-pkg ./mono-installer.pkg -target /

单版

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

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69821924

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档