Azure Pipelines运行Swashbuckle CLI遇FileNotFoundException问题排查
以下是你遇到的Swashbuckle CLI找不到DLL错误的可能原因及排查点:
阶段间工件传递未配置
Azure Pipelines不同阶段默认不共享文件,生成DLL的阶段需要将输出的ABC.WebAPI.dll及所在目录发布为工件,后续生成SDK的阶段必须下载该工件。检查生成阶段是否添加了PublishPipelineArtifact任务,确保包含目标DLL所在的app目录;同时确认SDK阶段是否有DownloadPipelineArtifact任务,且下载路径与CLI命令中指定的/home/vsts/work/1/a/app/一致。DLL实际生成路径与CLI指定路径不符
查看生成DLL的dotnet build任务日志,确认输出目录是否确实是/home/vsts/work/1/a/app/。如果build命令使用了--output参数自定义输出路径,需确保CLI命令中的路径和实际输出路径完全匹配。另外Linux环境路径区分大小写,检查ABC.WebAPI.dll的文件名大小写是否和CLI命令中的一致。DLL未成功生成
核对生成阶段的build日志,确认编译过程无错误,且确实生成了ABC.WebAPI.dll。可能存在编译警告被忽略但实际未生成DLL的情况,或者build目标(如Release/Debug)不匹配,导致输出目录中没有目标文件。CLI工作目录错误
如果CLI命令在非DLL所在目录执行,相对路径会失效。可以在执行CLI命令前添加cd /home/vsts/work/1/a/app/切换目录,或者在CLI命令中使用绝对路径指定DLL位置。DLL依赖缺失
错误提示是找不到DLL,但也可能是DLL存在但依赖项缺失,导致Swashbuckle CLI无法加载。可以在生成阶段改用dotnet publish命令,将WebAPI项目的DLL和所有依赖项一起发布,再用发布后的目录作为CLI的输入路径。
内容的提问来源于stack exchange,提问作者sharma

