GitHub Actions无法构建ASP.NET Core项目依赖的类库
解决GitHub Actions构建ASP.NET Core项目时找不到子模块类库的问题
问题分析
从构建日志和子模块拉取日志能明确路径不匹配:
- 构建时尝试查找的类库路径:
D:\a\MedbaseWebApi\MedbaseLibrary\MedbaseLibrary.csproj - 子模块实际被检出的路径:
D:/a/MedbaseWebApi/MedbaseWebApi/MedbaseLibrary
核心问题是:类库被检出到仓库根目录(MedbaseWebApi文件夹)下的MedbaseLibrary,但解决方案中引用的路径指向了仓库根目录的上级目录,导致构建时找不到项目文件。
解决方案
1. 修正解决方案中的类库引用路径
打开本地的MedbaseApi.sln文件,找到类库项目的引用条目,将路径从相对上级目录的格式(比如../MedbaseLibrary/MedbaseLibrary.csproj)修改为相对解决方案所在目录的格式:
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MedbaseLibrary", "./MedbaseLibrary/MedbaseLibrary.csproj", "{XXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}" EndProject
保存修改后提交到GitHub仓库。
2. 验证子模块配置
检查仓库根目录下的.gitmodules文件,确保子模块的path配置为仓库根目录下的MedbaseLibrary:
[submodule "MedbaseLibrary"] path = MedbaseLibrary url = https://github.com/tanakamawere/MedbaseLibrary
如果路径配置错误,修改后执行git submodule sync和git submodule update,再提交.gitmodules文件。
3. 可选:明确指定构建的解决方案路径
在GitHub Actions的构建步骤中,明确指定解决方案文件的路径,避免工作目录导致的路径问题:
- name: Build with dotnet run: dotnet build MedbaseApi.sln --configuration Release
(如果解决方案不在工作根目录,需调整为对应相对路径,比如./MedbaseWebApi/MedbaseApi.sln)
验证
重新触发GitHub Actions构建,确认构建日志中不再出现MSB3202错误,类库项目能被正常找到并构建。
内容的提问来源于stack exchange,提问作者Tanaka Mawere
相关产品推荐
相关产品推荐

