返回

解决在 Azure DevOps 管道中构建 .NET Maui 项目时的 NETSDK1005 错误

Android

修复在 Azure DevOps 管道中构建 .NET Maui 项目时的 NETSDK1005 错误

在使用 Azure DevOps 管道构建 .NET Maui 项目时,您可能会遇到令人沮丧的 NETSDK1005 错误。此错误通常源于项目资产文件中缺少对特定目标框架的支持。在本篇文章中,我们将深入探讨这个问题,并为您提供循序渐进的解决方案。

错误原因:

NETSDK1005 错误表示项目资产文件(project.assets.json)中缺少对 net8.0-android 目标框架的支持。当在 Azure DevOps 管道中构建 XUnit 测试项目时,该错误通常会出现,因为它会尝试还原对 net8.0-android 目标框架的支持的依赖项。

解决方案:

解决 NETSDK1005 错误的步骤如下:

  1. 确保您的 .NET Maui 项目中包含 net8.0-android 目标框架:
    检查您的 .NET Maui 项目文件(.csproj)并确保它包含了对 net8.0-android 目标框架的支持。

  2. 在 Azure DevOps 管道中更新项目引用:
    在 Azure DevOps 管道配置中,验证 XUnit 测试项目是否已作为项目引用添加到 .NET Maui 项目。

  3. 添加手动还原步骤:
    在构建步骤之前,在 Azure DevOps 管道中添加一个手动还原步骤。这将确保在构建之前还原所有依赖项。

  4. 更新 .NET SDK 版本:
    尝试更新 Azure DevOps 管道中使用的 .NET SDK 版本。

其他提示:

  • 确保 Azure DevOps 管道中的 .NET SDK 版本与您本地环境中使用的版本匹配。
  • 检查 XUnit 测试项目中的 TargetFramework 属性,并确保它与 .NET Maui 项目的 TargetFramework 属性相同。
  • 尝试在本地环境中构建解决方案,以确认该错误不再出现。
  • 如果问题仍然存在,请向 Microsoft 支持团队提交错误报告。

更新后的 Azure DevOps 管道配置:

trigger:
- main

stages:
  - stage: BuildAndroid
    displayName: 'Build Android'
    jobs:
      - job: Build_MAUI_App
        displayName: 'Build MAUI App Android'
        pool:
          vmImage: windows-latest
        steps:
          - task: JavaToolInstaller@0
            inputs:
              versionSpec: '11'
              jdkArchitectureOption: 'x64'
              jdkSourceOption: 'PreInstalled'
          - task: UseDotNet@2
            displayName: 'Use .NET Core SDK'
            inputs:
              packageType: 'sdk'
              version: '8.0.x'
              includePreviewVersions: true
          - task: DotNetCoreCLI@2
            displayName: 'Install MAUI Workloads'
            inputs:
              command: 'custom'
              custom: 'workload'
              arguments: 'install maui'
          - task: NuGetCommand@2
            displayName: 'Restore NuGet Packages'
            inputs:
              restoreSolution: '**/*.sln'
          - task: DotNetCoreCLI@2
            displayName: 'Build Android Project'
            inputs:
              command: 'build'
              projects: '**/*.sln'
              arguments: '-f net8.0-android -c Release /p:AndroidSdkDirectory=$androidSdkPath'
          - task: CopyFiles@2
            displayName: 'Copy APK Files to Artifact Staging Directory'
            inputs:
              SourceFolder: '$(Agent.BuildDirectory)'
              Contents: '**/*.apk'
              TargetFolder: '$(Build.ArtifactStagingDirectory)'
              flattenFolders: true
          - task: PublishBuildArtifacts@1
            displayName: 'Publish Build Artifacts'
            inputs:
              PathtoPublish: $(Build.ArtifactStagingDirectory)
              ArtifactName: 'drop'
              publishLocation: 'Container'

常见问题解答:

  1. 为什么我会遇到 NETSDK1005 错误?
    该错误表示项目资产文件中缺少对特定目标框架的支持,通常是 net8.0-android

  2. 如何解决 NETSDK1005 错误?
    请遵循本文中提供的步骤,包括更新项目引用、添加手动还原步骤以及更新 .NET SDK 版本。

  3. 如何确保我的 Azure DevOps 管道配置正确?
    请确保您已正确更新项目引用并添加了手动还原步骤。您还可以尝试更新 .NET SDK 版本。

  4. 为什么我的 XUnit 测试项目需要引用 .NET Maui 项目?
    XUnit 测试项目需要引用 .NET Maui 项目才能访问其代码和依赖项。

  5. 如何知道我的问题是否已解决?
    重新运行您的 Azure DevOps 管道并查看 NETSDK1005 错误是否消失。

结论:

遵循本文中提供的步骤,您可以解决在 Azure DevOps 管道中构建 .NET Maui 项目时遇到的 NETSDK1005 错误。通过仔细检查项目引用、添加手动还原步骤和更新 .NET SDK 版本,您可以确保您的管道顺利运行并交付构建工件。