Azure Pipeline中dotnet list package命令执行失败求助
问题原因与修复方案
核心错误点
- 错误安装.NET Core Runtime而非SDK:
dotnet list package是SDK专属命令,仅安装runtime无法提供该命令,必须安装对应版本的SDK。 - DotNetCoreCLI@2任务参数配置错误:
custom字段只需填子命令(如list),完整参数应放在arguments中,且任务内不能直接用>做输出重定向。 - 冗余的runtime安装步骤:SDK包会自带对应版本的runtime组件,无需单独安装。
修正后的管道配置
trigger: - master pool: vmImage: ubuntu-latest # 安装.NET Core 6 SDK(自带运行时,无需额外安装runtime) steps: - task: UseDotNet@2 displayName: 'Use .NET Core SDK 6.x' inputs: packageType: 'sdk' version: '6.0.x' includePreviewVersions: true # 还原NuGet包 - task: DotNetCoreCLI@2 inputs: command: 'restore' projects: '**/*.sln' feedsToUse: 'config' nugetConfigPath: 'nuget.config' externalFeedCredentials: 'TelerikFeed' displayName: Restore nuget packages # 直接用Bash任务执行命令并完成重定向 - task: Bash@3 inputs: targetType: 'inline' script: | dotnet list package --format json --include-transitive > $(Build.ArtifactStagingDirectory)/depts.json displayName: Generate NuGet dependency list # 发布产物 - task: PublishBuildArtifacts@1 inputs: PathtoPublish: '$(Build.ArtifactStagingDirectory)' ArtifactName: 'drop' publishLocation: 'Container'
额外说明
如果一定要用DotNetCoreCLI@2执行命令,需要拆分参数并通过后续步骤处理输出(不推荐,不如直接用Bash任务简便),示例:
- task: DotNetCoreCLI@2 inputs: command: 'custom' custom: 'list' arguments: 'package --format json --include-transitive' displayName: Run dotnet list package name: ListPackageOutput # 将任务输出写入文件 - task: Bash@3 inputs: targetType: 'inline' script: | echo "$(ListPackageOutput.stdout)" > $(Build.ArtifactStagingDirectory)/depts.json
内容的提问来源于stack exchange,提问作者sentenz
相关产品推荐
相关产品推荐

