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

Blazor(.NET6) Server/Client应用部署Google App Engine失败报错

Blazor .NET 6 部署至Google App Engine 报错解决方案

问题描述

我有一个Blazor(.NET 6) Server/Client应用,本地通过Visual Studio的HTTPS或Docker容器启动都正常,但执行gcloud app deploy部署到Google App Engine时,出现以下错误:

Step 8/18 : RUN dotnet restore "./SevenOfNine/Server/SevenOfNine.Server.csproj"
 ---> Running in b72b6927c101
MSBUILD : error MSB1009: Project file does not exist.
Switch: ./SevenOfNine/Server/SevenOfNine.Server.csproj
The command '/bin/sh -c dotnet restore "./SevenOfNine/Server/SevenOfNine.Server.csproj"' returned a non-zero code: 1

相关配置文件

Dockerfile

#See https://aka.ms/customizecontainer to learn how to customize your debug container and how Visual Studio uses this Dockerfile to build your images for faster debugging.

FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443

FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build
ARG BUILD_CONFIGURATION=Release
WORKDIR /src
COPY ["SevenOfNine/Server/SevenOfNine.Server.csproj", "SevenOfNine/Server/"]
COPY ["SevenOfNine/Server/holodeckhub-da6f4d98c75e.json", "SevenOfNine/Server/"]
COPY ["SevenOfNine.Models/SevenOfNine.Models.csproj", "SevenOfNine.Models/"]
COPY ["SevenOfNine/Client/SevenOfNine.Client.csproj", "SevenOfNine/Client/"]
COPY ["SevenOfNine/Shared/SevenOfNine.Shared.csproj", "SevenOfNine/Shared/"]
RUN dotnet restore "./SevenOfNine/Server/SevenOfNine.Server.csproj"
COPY . .
WORKDIR "/src/SevenOfNine/Server"
RUN dotnet build "./SevenOfNine.Server.csproj" -c $BUILD_CONFIGURATION -o /app/build

FROM build AS publish
ARG BUILD_CONFIGURATION=Release
RUN dotnet publish "./SevenOfNine.Server.csproj" -c $BUILD_CONFIGURATION -o /app/publish /p:UseAppHost=false

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

app.yaml

runtime: custom
env: flex

文件夹结构

\BorgCollective\
   BorgCollective.sln
   .dockerignore
   SevenOfNine\
      Server\
         SevenOfNine.Server.csproj
         Dockerfile
      Client\
         SevenOfNine.Client.csproj

.dockerignore文件

**/.classpath
**/.dockerignore
**/.env
**/.git
**/.gitignore
**/.project
**/.settings
**/.toolstarget
**/.vs
**/.vscode
**/*.*proj.user
**/*.dbmdl
**/*.jfm
**/azds.yaml
**/bin
**/charts
**/docker-compose*
**/Dockerfile*
**/node_modules
**/npm-debug.log
**/obj
**/secrets.dev.yaml
**/values.dev.yaml
LICENSE
README.md
!**/.gitignore
!.git/HEAD
!.git/config
!.git/packed-refs
!.git/refs/heads/**

解决方案

核心原因

你从Server子文件夹执行部署命令,但Dockerfile中的路径是基于解决方案根目录(BorgCollective)定义的,导致构建上下文不对,COPY指令找不到项目文件。

解决步骤

  1. 切换到解决方案根目录执行部署
    进入\BorgCollective\文件夹,运行gcloud app deploy。这是最直接的方案,能保证Dockerfile的路径上下文与本地调试时一致。

  2. 调整Dockerfile路径(可选)
    若坚持从Server目录部署,需修改Dockerfile中所有路径,适配当前上下文:

    # 修改COPY指令路径
    COPY ["../SevenOfNine/Server/SevenOfNine.Server.csproj", "../SevenOfNine/Server/"]
    COPY ["../SevenOfNine.Models/SevenOfNine.Models.csproj", "../SevenOfNine.Models/"]
    COPY ["../SevenOfNine/Client/SevenOfNine.Client.csproj", "../SevenOfNine/Client/"]
    COPY ["../SevenOfNine/Shared/SevenOfNine.Shared.csproj", "../SevenOfNine/Shared/"]
    # 修改restore路径
    RUN dotnet restore "../SevenOfNine/Server/SevenOfNine.Server.csproj"
    # 修改COPY根目录
    COPY .. .
    WORKDIR "/src/SevenOfNine/Server"
    

    此方式容易因路径层级出错,优先推荐第一种方案。

  3. 验证.dockerignore配置
    临时注释掉**/Dockerfile*和**/.dockerignore规则,避免部署时误排除必要文件(当前错误并非由此导致,但可排除潜在问题)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 00:22:49