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
相关产品推荐
相关产品推荐

