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

使用Docker构建Rider的.NET控制台项目时提示.csproj未找到

解决Docker构建找不到csproj或Dockerfile的问题

原因分析

自动生成的Dockerfile是基于解决方案根目录作为构建上下文设计的,但你的执行路径和上下文不匹配:

  • 在项目目录(RootFolder)执行docker build .时,构建上下文是当前项目目录,Dockerfile里的COPY ["RootFolder/RootFolder.csproj", "RootFolder/"]会去当前目录找RootFolder子目录,自然找不到目标文件。
  • 执行docker build ..时,构建上下文切换为解决方案根目录,但Dockerfile存放在RootFolder目录里,Docker默认会在上下文根目录查找Dockerfile,因此提示文件不存在。

正确解决步骤

方法1:指定Dockerfile路径与正确构建上下文

在解决方案根目录执行以下命令,明确指定Dockerfile的位置:

docker build -f RootFolder/Dockerfile .
  • . 表示将解决方案根目录作为构建上下文,确保Dockerfile里的COPY路径能匹配到项目文件
  • -f RootFolder/Dockerfile 指定使用项目目录下的Dockerfile文件

方法2:调整Dockerfile位置(更规范的做法)

把自动生成的Dockerfile从项目目录(RootFolder)移动到解决方案根目录,无需修改Dockerfile内容,直接在解决方案根目录执行:

docker build .

Docker会自动识别根目录下的Dockerfile,且构建上下文正确,COPY路径能正常匹配。

方法3:修改Dockerfile适配项目目录作为构建上下文

如果坚持在项目目录执行构建,修改Dockerfile里的路径,去掉RootFolder/前缀:

FROM mcr.microsoft.com/dotnet/runtime:7.0 AS base
WORKDIR /app

FROM mcr.microsoft.com/dotnet/sdk:7.0 AS build
WORKDIR /src
COPY ["RootFolder.csproj", "."]
RUN dotnet restore "RootFolder.csproj"
COPY . .
WORKDIR "/src"
RUN dotnet build "RootFolder.csproj" -c Release -o /app/build

FROM build AS publish
RUN dotnet publish "RootFolder.csproj" -c Release -o /app/publish

FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "RootFolder.dll"]

然后在项目目录(RootFolder)执行:

docker build .

验证

构建成功后,运行容器测试:

docker run <生成的镜像名称>

正常情况下会输出Hello World!

内容的提问来源于stack exchange,提问作者R.Haughton

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 05:25:16