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

Docker构建.NET镜像报错:当前工作目录无项目/解决方案文件

问题描述

构建Docker镜像时出现如下报错:

Specify a project or solution file. The current working directory does not contain a project or solution file.

报错截图:
报错截图
该截图同时包含执行的Docker命令信息。

项目目录结构:src文件夹存放项目代码,.sln解决方案文件位于src文件夹外层(代码仓库根目录),结构截图如下:
项目结构截图

当前Azure DevOps流水线中负责构建、推送镜像的deployment.yaml配置如下:

name: test run 
jobs:
- job: Job_1
  displayName: Agent job 1
  pool:
    vmImage: ubuntu-18.04
  steps:
  - checkout: self
  - task: Docker@0
    displayName: Build an image
    inputs:
      azureSubscription: 'sc-abc'
      azureContainerRegistry:
      loginServer: acr.azurecr.io
      id: "/subscriptions/4f76bb2f-c521-45d1-b311-xxxxxxxxxx/resourceGroups/eus-abc-rg/providers/Microsoft.ContainerRegistry/registries/acr"
      imageName: acr.azurecr.io/ims-abc/dotnetapi:jp26052022v8
  - task: Docker@0
    displayName: Push an image
    inputs:
      azureSubscription: 'sc-abc'
      azureContainerRegistry: '{"loginServer":"acr.azurecr.io", "id" : "/subscriptions/4f76bb2f-c521-45d1-b311-xxxxxxxxxx/resourceGroups/eus-icndp-rg/providers/Microsoft.ContainerRegistry/registries/acr"}'
      action: Push an image
问题根因

Docker构建默认以命令执行目录作为构建上下文,当前流水线Docker任务未显式指定构建上下文,默认使用src目录作为工作目录,而.sln解决方案文件存放在src的上级目录,构建过程中无法检索到解决方案文件,因此触发报错。

调整方案

修改Docker@0任务配置,显式指定构建上下文为仓库根目录(即.sln文件所在位置),同时明确标注Dockerfile的相对路径,修改后完整配置如下:

name: test run 
jobs:
- job: Job_1
  displayName: Agent job 1
  pool:
    vmImage: ubuntu-18.04
  steps:
  - checkout: self
  - task: Docker@0
    displayName: Build an image
    inputs:
      azureSubscription: 'sc-abc'
      azureContainerRegistry:
      loginServer: acr.azurecr.io
      id: "/subscriptions/4f76bb2f-c521-45d1-b311-xxxxxxxxxx/resourceGroups/eus-abc-rg/providers/Microsoft.ContainerRegistry/registries/acr"
      imageName: acr.azurecr.io/ims-abc/dotnetapi:jp26052022v8
      # 替换为你的Dockerfile相对于仓库根目录的实际路径
      dockerFile: 'src/[你的项目文件夹名]/Dockerfile'
      # 指定构建上下文为仓库根目录,即.sln文件所在层级
      buildContext: '.'
  - task: Docker@0
    displayName: Push an image
    inputs:
      azureSubscription: 'sc-abc'
      azureContainerRegistry: '{"loginServer":"acr.azurecr.io", "id" : "/subscriptions/4f76bb2f-c521-45d1-b311-xxxxxxxxxx/resourceGroups/eus-icndp-rg/providers/Microsoft.ContainerRegistry/registries/acr"}'
      action: Push an image
      # 推送任务配置与构建任务对齐,避免找不到本地构建产物
      dockerFile: 'src/[你的项目文件夹名]/Dockerfile'
      buildContext: '.'

校验项

  • 将配置中dockerFile字段的路径替换为你项目中Dockerfile的实际相对路径
  • 同步检查Dockerfile内部的COPY、dotnet restore、dotnet publish等命令的路径,确保路径相对于新的构建上下文(仓库根目录)是正确的,避免出现层级错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.01 23:00:17