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

Blazor项目抽离类库后Github Actions找不到项目文件求助

解决Github Actions无法找到共享类库项目的问题

我是一名医学生,为班级开发了一个Blazor网站,原本通过Github Actions构建并FTP部署到主机服务商,运行正常。之后将模型抽象为类库项目MedbaseLibrary,供API、Blazor网站和MAUI App共享,本地调试及发布文件夹均正常,但Github Actions运行失败,报错信息如下:

Run dotnet restore
/usr/share/dotnet/sdk/8.0.200/NuGet.targets(414,5): error MSB3202: The project file "/home/runner/work/MedbaseBlazor/MedbaseLibrary/MedbaseLibrary.csproj" was not found. [/home/runner/work/MedbaseBlazor/MedbaseBlazor/MedbaseBlazor.sln]
Error: Process completed with exit code 1.

我尝试使用子模块但未解决问题,当前的Github Actions配置文件如下:

# This workflow will build a .NET project
# For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-net

name: .NET

on:
  push:
    branches: [ "master" ]
  pull_request:
    branches: [ "master" ]

jobs:
  build:

    runs-on: ubuntu-latest

    steps:
    - uses: actions/checkout@v3
      with:
        submodules: 'recursive'
    - name: Setup .NET
      uses: actions/setup-dotnet@v3
      with:
        dotnet-version: 7.0.x
    - name: Restore dependencies
      run: dotnet restore
    - name: Build
      run: dotnet build --no-restore
    - name: Test
      run: dotnet test --no-build --verbosity normal
    - name: Publish
      run: dotnet publish -c Release --property:PublishDir=./Release
    - name: ftp-action
      uses: sebastianpopp/ftp-action@v2.0.0
      with:
        # Deployment destination server & path. Formatted as protocol://domain.com:port/full/destination/path/
        host: ${{ secrets.FTP_SERVER}}
        # FTP account username
        user: ${{ secrets.FTP_USERNAME}}
        # FTP account password
        password: ${{ secrets.FTP_PASSWORD }}
        localDir: ./Release/

排查与解决步骤

1. 确认类库项目的仓库位置

  • 检查本地仓库中MedbaseLibrary的实际路径,确保和解决方案文件中引用的路径一致。比如如果本地类库在MedbaseBlazor/MedbaseLibrary下,那解决方案里的路径也应该对应,而不是根目录下的MedbaseLibrary。
  • 确认MedbaseLibrary项目文件已经提交到Github仓库,没有被.gitignore规则排除。

2. 修正解决方案的项目引用

打开MedbaseBlazor.sln文件,检查类库项目的引用路径是否正确。如果路径有误,手动修改为仓库中的实际路径,比如:

Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MedbaseLibrary", "MedbaseLibrary/MedbaseLibrary.csproj", "{GUID}"
EndProject

确保引号中的路径和仓库里的结构完全匹配。

3. 调整子模块配置(若使用子模块)

如果MedbaseLibrary是子模块:

  • 确认.gitmodules文件中配置的子模块URL正确,且路径设置符合预期。
  • 修改actions/checkout步骤,确保子模块被正确拉取到对应位置:
    - uses: actions/checkout@v3
      with:
        submodules: true
    

4. 统一.NET SDK版本

报错中使用的是.NET 8.0.200 SDK,但Actions配置里指定的是7.0.x,版本不匹配可能导致路径解析异常。将SDK版本改为和本地一致的版本:

- name: Setup .NET
  uses: actions/setup-dotnet@v3
  with:
    dotnet-version: 8.0.x

5. 显式指定命令的目标文件

在dotnet命令中明确指定解决方案或项目文件路径,避免路径歧义:

- name: Restore dependencies
  run: dotnet restore ./MedbaseBlazor/MedbaseBlazor.sln
- name: Build
  run: dotnet build ./MedbaseBlazor/MedbaseBlazor.sln --no-restore
- name: Publish
  run: dotnet publish ./MedbaseBlazor/YourBlazorProjectName.csproj -c Release --property:PublishDir=./Release

注意替换YourBlazorProjectName为实际的Blazor项目名称。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 12:25:28