Azure DevOps构建带XUnit测试的.NET MAUI项目时遇NETSDK1005错误
解决Azure DevOps构建.NET MAUI带XUnit测试项目的NETSDK1005错误
问题根源
构建命令中指定了-f net8.0-android目标框架,但XUnit测试项目的目标框架并非net8.0-android(通常为net8.0),当构建整个解决方案时,系统会尝试为测试项目也构建该非兼容框架,导致project.assets.json缺少对应目标的错误。
解决方案
1. 精准指定MAUI项目进行构建
修改流水线的Build步骤,直接指向MAUI项目文件而非整个解决方案,避免触发测试项目的不兼容框架构建:
- task: DotNetCoreCLI@2 displayName: 'Build Android Project' inputs: command: 'build' projects: '**/SampleMauiApp.csproj' # 替换为你的MAUI项目相对路径 arguments: '-f net8.0-android -c Release /p:AndroidSdkDirectory=$androidSdkPath'
还原步骤可以保留针对整个解决方案的配置,因为还原操作会自动适配每个项目的目标框架。
2. 为测试项目添加构建条件
若需保留构建整个解决方案的逻辑,可在XUnit测试项目的.csproj中添加条件,当构建目标为net8.0-android时跳过该项目:
<Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <TargetFramework>net8.0</TargetFramework> <IsPackable>false</IsPackable> <!-- 添加条件:当目标框架为net8.0-android时不构建此项目 --> <Build Condition="'$(TargetFramework)' == 'net8.0-android'">false</Build> </PropertyGroup> <!-- 其他依赖配置 --> </Project>
3. 拆分MAUI与测试项目的构建流程
如果需要同时构建MAUI项目和测试项目,可拆分构建步骤,分别指定各自的目标框架:
# 原MAUI构建步骤 - task: DotNetCoreCLI@2 displayName: 'Build Android Project' inputs: command: 'build' projects: '**/SampleMauiApp.csproj' arguments: '-f net8.0-android -c Release /p:AndroidSdkDirectory=$androidSdkPath' # 添加测试项目构建步骤 - task: DotNetCoreCLI@2 displayName: 'Build Test Project' inputs: command: 'build' projects: '**/SampleMauiApp.Test.csproj' arguments: '-c Release' # 测试项目使用自身的目标框架(如net8.0)
内容的提问来源于stack exchange,提问作者Vinay Kumar K
相关产品推荐
相关产品推荐

