NuGet 恢复问题:未找到 Xamarin iOS CSharp 目标

问题描述 投票:0回答:2

我在 Azure DevOps 上有一个 Xamarin Forms Android 构建管道,我的应用程序在本地构建没有问题。当管道运行时,当我尝试执行 NuGet 恢复时,我收到以下错误(ios 管道使用相同的设置并恢复没有问题)。

错误

The imported project "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Xamarin\iOS\Xamarin.iOS.CSharp.targets" was not found.

这是尝试 NuGet 还原时失败的行

<Import Project="$(MSBuildExtensionsPath)\Xamarin\iOS\Xamarin.iOS.CSharp.targets" />

我昨天没有收到此问题,也没有进行任何

.csproj
.sln
更改,所以我不知道为什么会出现此问题,感谢您的帮助。

构建代理

  • Windows-2022
  • NuGet 5.9.1
c# xamarin xamarin.forms xamarin.android nuget
2个回答
3
投票

正如我所评论的,代理似乎发生了变化,现在 VS2022 中不包含 Xamarin 组件。您可以在此 GitHub 问题中了解更多相关信息:https://github.com/actions/runner-images/issues/6082

在该链接的问题中还有一个解决方法,您可以自己安装 Xamarin 组件。请注意,仅安装该组件就会使管道额外增加大约 4 分钟的时间:

- pwsh: |
    Set-Location "C:\Program Files (x86)\Microsoft Visual Studio\Installer\"
    $InstallPath = "C:\Program Files\Microsoft Visual Studio\2022\Enterprise"
    $componentsToAdd = @(
      "Component.Xamarin"
    )
    [string]$workloadArgs = $componentsToAdd | ForEach-Object {" --add " +  $_}
    $Arguments = ('/c', "vs_installer.exe", 'modify', '--installPath', "`"$InstallPath`"",$workloadArgs, '--quiet', '--norestart', '--nocache')
    $process = Start-Process -FilePath cmd.exe -ArgumentList $Arguments -Wait -PassThru -WindowStyle Hidden
    if ($process.ExitCode -eq 0)
    {
        Write-Host "components have been successfully added"
    }
    else
    {
        Write-Host "components were not installed"
        exit 1
    }
  displayName: "Install Xamarin Components"

替代方法是切换到 macOS-12 代理并在其基础上进行构建。


2
投票

Apple 抱怨我的 Xamarin iOS 项目的 SDK 版本是在 macos 最新构建代理上的 Azure Pipelines 中构建的。

ITMS-90725:SDK 版本问题 - 此应用程序是使用 iOS 16.2 构建的 SDK。从 2024 年 4 月 29 日开始,所有 iOS 和 iPadOS 应用程序都必须构建 使用 iOS 17 SDK 或更高版本,包含在 Xcode 15 或更高版本中,按顺序 上传至 App Store Connect 或提交分发。

我发现macos-latest显然不是最新的,当时是macos-12。我切换到macos-13并遇到了与OP相同的问题。我在这里找到的最简单的解决方案https://github.com/actions/runner-images/issues/8528是在构建解决方案之前添加bash命令步骤:

steps:
- bash: |
   dotnet tool install --global boots
   boots --stable Xamarin.iOS
   displayName: 'Install Xamarin.iOS'
© www.soinside.com 2019 - 2024. All rights reserved.