Azure Function的Azure Pipeline发布任务找不到项目如何处理
DotNetCoreCLI@2 发布Azure Function项目找不到匹配文件的核心遗漏配置
绝大多数该场景的问题都来自以下3项配置缺失/错误,和直接执行script脚本的默认逻辑差异有关:
1. 未关闭默认Web项目过滤规则
DotNetCoreCLI@2 任务
publish命令的默认配置为publishWebProjects: true,只会识别项目Sdk为Microsoft.NET.Sdk.Web的Web应用项目。Azure Function项目的Sdk为Microsoft.NET.Sdk.Functions,不属于默认识别范围,会被直接过滤,进而抛出找不到匹配项目的错误。
手动执行dotnet publish脚本没有该内置过滤逻辑,只要路径正确就能正常识别Function项目。
2. 项目匹配路径规则配置错误
DotNetCoreCLI@2的projects参数的路径匹配规则和终端直接执行命令的相对路径逻辑有差异:
- 如果你在脚本中直接指定了项目文件的完整路径(比如
dotnet publish ./src/MyFunc/MyFunc.csproj),但DotNetCoreCLI@2任务中仅配置*.csproj,任务只会在流水线根工作目录查找项目,不会递归扫描子目录。 - 正确的配置需要写全匹配规则,比如递归匹配所有csproj用
**/*.csproj,或者精确匹配目标项目**/MyFunc.csproj。
3. 工作目录配置缺失
如果你的脚本执行前有手动切换到项目所在目录的操作,但是DotNetCoreCLI@2任务没有配置workingDirectory参数指向对应目录,任务会默认从根工作目录开始查找项目,导致匹配失败。
标准可用配置参考
- task: DotNetCoreCLI@2 inputs: command: 'publish' publishWebProjects: false # 核心必填配置,关闭默认Web项目过滤 projects: '**/YourFunctionProject.csproj' # 替换为你的项目匹配规则 arguments: '--configuration Release --output $(Build.ArtifactStagingDirectory)' workingDirectory: '$(System.DefaultWorkingDirectory)/src' # 项目在子目录时按需配置
内容的提问来源于stack exchange,提问作者Cedervall
相关产品推荐
相关产品推荐

