如何让Azure Pipelines构建含.NET 8与.NET MAUI类库的解决方案?
解决Azure Pipelines中MAUI构建NETSDK1005报错的问题
问题根源
当你在Azure Pipelines中直接执行dotnet publish -f net8.0-android时,该命令会强制解决方案内所有项目都以net8.0-android为目标框架构建,但普通.NET 8类库仅包含net8.0目标,因此触发NETSDK1005错误。而Visual Studio在构建时会自动处理依赖项目的框架兼容逻辑:仅为MAUI项目指定net8.0-android目标,普通类库则使用自身的net8.0目标构建,所以本地构建不会报错。
修复方法
方法1:指定MAUI应用项目路径
直接在publish命令中明确指定MAUI应用的项目文件路径,命令仅会构建MAUI项目及其依赖,且依赖的普通类库会自动使用兼容的net8.0目标:
- task: Bash@3 displayName: Build App inputs: targetType: 'inline' script: | dotnet publish ./YourMauiApp/YourMauiApp.csproj -f net8.0-android -c Release
将./YourMauiApp/YourMauiApp.csproj替换为你实际的MAUI项目相对路径。
方法2:使用--no-restrictive-framework参数(.NET 8+支持)
若不想指定具体项目路径,可添加--no-restrictive-framework参数,该参数会告知dotnet命令不要强制所有依赖项目使用指定的目标框架,允许依赖项目使用自身兼容的框架:
- task: Bash@3 displayName: Build App inputs: targetType: 'inline' script: | dotnet publish -f net8.0-android -c Release --no-restrictive-framework
此参数为.NET 8新增,专门用于解决跨框架依赖构建的这类问题。
内容的提问来源于stack exchange,提问作者NovaJoe
相关产品推荐
相关产品推荐

