使用Entity Framework Core的MAUI项目在Azure Pipeline构建失败求助
解决Azure Pipeline构建MAUI+EF Core项目的NETSDK1005错误
问题根源
MAUI主项目属于多目标框架项目(包含net9.0-android等移动端框架),它引用的独立EFCore类库仅针对通用框架(如net9.0)。Azure Pipeline构建MAUI时,会尝试为所有移动端目标框架解析依赖,但EFCore类库的project.assets.json没有对应移动端框架的目标配置,因此触发报错。
解决方案
方案1:让EFCore类库支持多目标框架
打开EFCore项目的.csproj文件,将单个TargetFramework替换为TargetFrameworks,包含MAUI所需的所有目标框架:
<Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <TargetFrameworks>net9.0;net9.0-android;net9.0-ios;net9.0-maccatalyst</TargetFrameworks> <ImplicitUsings>enable</ImplicitUsings> <Nullable>enable</Nullable> </PropertyGroup> <!-- 其他依赖配置 --> </Project>
方案2:标记类库为跨目标项目(无需修改目标框架)
如果EFCore类库不需要针对移动端框架运行,只需在其.csproj中添加以下配置,让MAUI项目引用时不强制匹配所有目标框架:
<PropertyGroup> <IsCrossTargetingProject>true</IsCrossTargetingProject> </PropertyGroup>
方案3:修正Pipeline的Restore与构建步骤
确保Pipeline中先针对整个解决方案执行restore,再进行构建:
steps: - task: DotNetCoreCLI@2 displayName: 'Restore dependencies' inputs: command: 'restore' projects: '**/*.sln' - task: DotNetCoreCLI@2 displayName: 'Build solution' inputs: command: 'build' projects: '**/*.sln' arguments: '--configuration Release'
如果Pipeline中有EF迁移相关的任务,指定针对通用框架执行,避免移动端框架冲突:
- task: DotNetCoreCLI@2 displayName: 'Apply EF Migrations' inputs: command: 'run' projects: 'EFCore/EFCore.csproj' arguments: '--framework net9.0'
内容的提问来源于stack exchange,提问作者Derek
相关产品推荐
相关产品推荐

