You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure DevOps CI构建.NET Core项目无报错但未生成工件问题排查求助

排查Azure .NET Core流水线未生成工件的问题

我看了你的YAML配置,发现几个关键问题导致构建完成但没有生成工件,咱们一步步来梳理:

主要问题分析

  • Publish任务参数错误:在Publish WebApi步骤里,你写了--runtime -r $(runtime),这里重复了运行时参数(--runtime和-r是同一个参数的长/短格式),会导致DotNet CLI解析失败,大概率没有正确把发布产物输出到$(Build.ArtifactStagingDirectory)目录。
  • 缺少发布工件的核心步骤:你已经把文件复制到了$(Build.ArtifactStagingDirectory),但没有使用专门的任务把这个目录的内容正式发布为流水线工件,所以Azure DevOps不会展示生成的工件。
  • CopyFiles任务冗余且可能有问题:你的CopyFiles任务没有指定源目录,默认会复制工作目录下的所有文件到staging目录,这不仅没必要(因为Publish任务已经可以直接输出到目标目录),还可能混入无关文件,甚至覆盖正确的发布产物。

修复后的YAML配置

我调整了你的配置,修复了上述问题,你可以试试这个版本:

trigger:
  branches:
    include:
      - release/*
  paths:
    include:
      - Reeft/Organization/OrganizationService/*
      - Reeft/Organization/OrganizationServicePipelines/organization-service-test.yml
pool:
  vmImage: 'windows-2022'
variables:
  solution: '**/*.sln'
  buildPlatform: 'Any CPU'
  buildConfiguration: 'Release'
  projectName: '**/F11.Web.csproj'
  runtime: 'win-x64'
steps:
- task: UseDotNet@2
  displayName: 'Use .NET 5 SDK (preview)'
  inputs:
    packageType: 'sdk'
    version: '5.0.100-rc.1.20452.10'
    vsVersion: '16.8.0'
    includePreviewVersions: true
- task: DotNetCoreCLI@2
  inputs:
    command: 'restore'
    projects: '$(projectName)'
    feedsToUse: 'select'
- task: DotNetCoreCLI@2
  displayName: Build
  inputs:
    projects: '$(projectName)'
    arguments: '--no-restore'
- task: DotNetCoreCLI@2
  displayName: Test
  inputs:
    command: test
    # 注意:如果你的Web项目没有测试代码,这里应该指向测试项目的csproj,比如**/*Tests.csproj
    projects: '$(projectName)'
    arguments: '-l "console;verbosity=detailed"'
- task: DotNetCoreCLI@2
  displayName: 'Publish WebApi'
  inputs:
    command: publish
    publishWebProjects: false
    projects: '$(projectName)'
    # 修复重复的runtime参数,同时确保输出到ArtifactStagingDirectory
    arguments: '--configuration $(BuildConfiguration) --output $(Build.ArtifactStagingDirectory) --runtime $(runtime) --self-contained true'
    # 如果不需要自包含部署,可以去掉--self-contained true
- task: PublishPipelineArtifact@1
  displayName: 'Publish Artifact'
  inputs:
    targetPath: '$(Build.ArtifactStagingDirectory)'
    artifact: 'drop'
    publishLocation: 'Container'

额外提示

  • 如果你用的是Web项目,Test步骤里的$(projectName)指向的是Web项目,而不是测试项目,这可能会导致测试任务警告“找不到测试”,建议把测试项目单独指定,比如projects: '**/*Tests.csproj'。
  • 确认你的$(projectName)变量能正确匹配到目标Web项目,避免路径匹配错误导致发布空内容。

内容的提问来源于stack exchange,提问作者Taqi Rizvi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.29 00:32:46