GitHub Action未生成Publish文件夹且未更新DLL问题求助
GitHub Actions构建成功但无publish产物的问题解决
核心逻辑澄清
你看到的D:\a\PracticeCICDGithub\PracticeCICDGithub\publish是GitHub云端Windows构建机的路径,不是你本地电脑的目录——云端构建的产物默认只存在于构建过程的虚拟机中,构建结束后就会被销毁,所以本地找不到这个文件夹是正常的,这也是你觉得“代码没更新”的根本原因。
分步修复方案
1. 修正发布命令的路径配置
检查你的YAML里的发布命令,把硬编码路径换成GitHub Actions的环境变量,确保产物生成在工作空间内:
- name: 发布应用 run: dotnet publish -c Release -o ${{ github.workspace }}/publish
${{ github.workspace }}会自动指向云端构建机中你的代码仓库根目录,避免路径错误。
2. 添加产物上传步骤
构建完成后,必须把publish文件夹作为构建产物上传,这样你才能下载到本地或部署到服务器:
- name: 上传发布产物 uses: actions/upload-artifact@v4 with: name: publish-packages path: ${{ github.workspace }}/publish
上传完成后,你可以在GitHub仓库的Actions页面找到对应运行记录,在页面底部的「Artifacts」区域下载生成的publish文件夹及里面的DLL文件。
3. 核对发布命令的日志输出
去GitHub Actions的运行日志里找发布命令的输出,确认有没有出现Publish succeeded.的提示。如果没有,说明发布命令虽然返回了成功码,但实际没完成发布——这时要检查你的项目文件(.csproj/.sln),比如是否正确设置了输出类型(控制台应用/类库等),或者项目是否存在编译警告导致发布中断。
4. 匹配.NET SDK版本
确保云端构建用的.NET SDK版本和你的项目兼容,在YAML开头添加SDK配置:
- name: 配置.NET环境 uses: actions/setup-dotnet@v4 with: dotnet-version: '8.0.x' # 替换成你的项目依赖的SDK版本
重要提醒
- 云端构建产物不会自动同步到本地,必须通过上传artifact或者直接部署到服务器的方式获取;
- 构建“成功”只代表命令返回码为0,不代表发布过程完全正确,一定要看发布命令的具体日志;
- 尽量用环境变量代替硬编码路径,避免跨平台(比如切换到Linux runner)时出现路径错误。
内容的提问来源于stack exchange,提问作者pratapsingh845
相关产品推荐
相关产品推荐

