Azure Pipeline生成EF Core迁移脚本时缺失.deps.json文件报错
问题
在Azure Pipeline中配置EF Core迁移脚本生成任务时,已通过MSBuild任务以Release配置完成构建,但Generate EF SQL Script任务仍尝试读取Debug目录下的deps.json文件,导致报错:
The specified deps.json [C:\__w\1\s\HR Taxonomy Change Management\bin\Debug\net6.0\HR Taxonomy Change Management.deps.json] does not exist
当前Pipeline关键配置:
- 构建任务(MSBuild@1)已指定
configuration: 'release' - EF脚本生成任务(DotNetCoreCLI@2)设置了
configuration: 'release'但未生效
原因
DotNetCoreCLI@2任务的configuration输入参数仅对build、publish等内置命令生效,对于ef这类自定义命令,该参数不会自动传递给底层的dotnet ef命令,导致ef工具默认读取Debug配置的构建输出路径。
规范解决方案
以下两种方法均为官方推荐的规范解决方式,无需复制文件:
方法1:在ef命令参数中显式指定Release配置
直接在arguments里添加--configuration Release参数,让ef工具明确读取Release目录的构建产物:
- task: DotNetCoreCLI@2 displayName: 'Generate EF SQL Script' inputs: command: 'custom' custom: 'ef' arguments: 'migrations script --no-build --verbose --configuration Release --project "$(Build.SourcesDirectory)\HR Taxonomy Change Management\HR Taxonomy Change Management.csproj" --output $(Build.SourcesDirectory)\script.sql --idempotent'
注意:移除原配置中无效的
configuration: 'release'行,同时修正项目路径的转义问题,直接用双引号包裹带空格的路径即可。
方法2:通过环境变量传递MSBuild属性
设置MSBuildConfiguration环境变量,让ef工具继承Release配置:
- task: DotNetCoreCLI@2 displayName: 'Generate EF SQL Script' inputs: command: 'custom' custom: 'ef' arguments: 'migrations script --no-build --verbose --project "$(Build.SourcesDirectory)\HR Taxonomy Change Management\HR Taxonomy Change Management.csproj" --output $(Build.SourcesDirectory)\script.sql --idempotent' env: MSBuildConfiguration: Release
验证要点
- 确保MSBuild构建任务的
clean: true配置已启用,避免残留Debug环境的obj文件干扰ef工具的路径解析 - 检查ef命令的
--no-build参数:因为已提前完成Release构建,该参数可跳过重复构建,提升效率
内容的提问来源于stack exchange,提问作者USMC6072
相关产品推荐
相关产品推荐

