DevOps Pipeline忽略指定项目失败,NuGet还原报错求助
解决Azure DevOps Pipeline中NuGet还原阶段排除项目失败的问题
问题根源
当前配置的核心错误在于projects参数使用了换行格式,Azure DevOps的DotNetCoreCLI任务无法正确解析多行匹配模式;同时macOS的大小写敏感特性,也可能因文件名大小写不匹配导致排除规则失效,最终触发No files matched the search pattern错误。
解决方案
1. 修正匹配模式格式
将包含与排除模式合并为单行,用逗号分隔,这是DotNetCoreCLI任务要求的正确格式:
- task: DotNetCoreCLI@2 displayName: 'Nuget Restore' inputs: command: 'restore' projects: '**/*.csproj,!**/Portal.Desktop.csproj' # 合并为单行,用逗号分隔规则 feedsToUse: 'config' nugetConfigPath: 'nuget.config'
2. 验证路径匹配准确性
- macOS是大小写敏感系统,确保
Portal.Desktop.csproj的文件名大小写与实际项目完全一致,避免因大小写不匹配导致排除规则失效,进而没有符合条件的项目被选中。 - 可在Pipeline中添加Bash任务,提前列出所有.csproj文件,确认目标文件路径:
- task: Bash@3 displayName: 'List all csproj files' inputs: targetType: 'inline' script: 'find $(Build.SourcesDirectory) -name "*.csproj"'
3. 显式指定MAUI项目(备选方案)
如果排除模式仍有问题,直接指定MAUI项目路径可更精准避免匹配错误,例如:
- task: DotNetCoreCLI@2 displayName: 'Nuget Restore' inputs: command: 'restore' projects: '**/YourMauiProjectName.csproj' # 替换为你的MAUI项目文件名 feedsToUse: 'config' nugetConfigPath: 'nuget.config'
额外排查步骤
- 在本地macOS环境运行
dotnet restore **/*.csproj !**/Portal.Desktop.csproj,验证是否能正确找到并还原MAUI项目依赖。 - 确认Pipeline的代码拉取步骤已完整获取所有项目文件,未遗漏MAUI项目的.csproj。
内容的提问来源于stack exchange,提问作者Kylar182
相关产品推荐
相关产品推荐

