我们有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
解决办法是将它排除在解决方案之外,但我们正在使用它进行测试,这对我们来说不是一个好的选择。
发布于 2021-11-04 11:52:54
昨天,我们的iOS (macos-11)和安卓(MacOS10.15)管道也遇到了同样的问题。
mono的21180问题似乎是根本原因,在拉请求中也引用这个问题来更新MacOs虚拟环境的mono版本。对于此工作流测试,我们给了msbuild一个机会,它起作用了。
解决方案:
我们不使用NuGet还原,而是直接使用MSBuild。
- 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包还原以生成此文件。
发布于 2021-11-03 08:56:02

-任务: 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
https://stackoverflow.com/questions/69821924
复制相似问题