You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure Pipelines构建Xamarin.Forms iOS项目时NuGet恢复出现MSB4057错误

macOS主机Xamarin.Forms iOS构建NuGet恢复失败解决方案

该报错根因为macOS环境的MSBuild不包含UWP项目专属的恢复目标,全解决方案执行NuGet恢复时会尝试调用UWP项目不存在的_IsProjectRestoreSupported目标,触发失败:

##[error]The nuget command failed with exit code(1) and error(/Users/runner/work/1/s/"MyProjectName.UWP".csproj : error MSB4057: The target "_IsProjectRestoreSupported" does not exist in the project。

以下三种方案均不需要移除UWP项目即可解决问题:

方案1:指定仅恢复iOS项目的NuGet包

修改Azure Pipelines的NuGet Restore步骤,不再直接指向整个.sln解决方案文件,改为仅指定iOS项目的.csproj路径,示例YAML配置如下:

- task: NuGetCommand@2
  inputs:
    restoreSolution: '**/MyProjectName.iOS.csproj' # 替换为你的iOS项目实际路径

该方案不会改动解决方案结构,仅在iOS构建环节跳过UWP项目的恢复流程。

方案2:使用解决方案生成筛选器排除UWP项目

  • 打开解决方案在Visual Studio中新建专属生成配置,命名为iOS-Release,配置中仅勾选iOS项目的生成选项,取消UWP项目的生成勾选,保存配置
  • 修改NuGet Restore步骤,添加参数指定使用该专属配置:
    nuget restore MyProjectName.sln -p:Configuration=iOS-Release
    
  • 也可直接在恢复命令中添加UWP项目排除规则:
    nuget restore MyProjectName.sln -p:ExcludeProjects="**/*.UWP.csproj"
    

方案3:修改UWP项目配置兼容非Windows环境

编辑UWP项目的.csproj文件,在文件末尾的</Project>标签之前添加如下判断逻辑,在非Windows系统下自动补全缺失的目标:

<PropertyGroup Condition=" '$(OS)' != 'Windows_NT' ">
  <Target Name="_IsProjectRestoreSupported" Returns="@(_ValidProjectsForRestore)"/>
</PropertyGroup>

该配置不会影响Windows环境下UWP项目的正常生成、测试与NuGet恢复操作。

内容的提问来源于stack exchange,提问作者Iliyan Popov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 18:24:07