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

如何通过GitHub Actions安装NuGet包并更新package.config?

问题分析与修复方案

你的GitHub Actions Workflow目前缺少几个核心环节,导致无法更新package.config并将依赖包部署到bin目录,具体问题和修复步骤如下:

1. 未拉取目标仓库代码

你当前的Workflow没有checkout repo2的代码,后续命令找不到package.config文件,自然无法修改它。必须先添加代码拉取步骤。

2. 用错了NuGet命令

nuget install仅会下载包到当前目录,不会更新package.config里的依赖版本。要修改配置文件,得用:

  • 针对package.config格式的项目:nuget update <项目路径> -Id <你的核心包名>
  • 针对SDK风格(.csproj)项目:dotnet update package <你的核心包名>

3. 未提交推送变更

就算更新了package.config,如果不把变更提交推送到repo2,仓库里的文件不会有任何变化,必须添加Git提交推送步骤。

4. 冗余的源配置

Workflow里重复添加了NuGet源,只需要配置一次即可,还要确保源地址是正确的GitHub Packages格式(比如https://nuget.pkg.github.com/<你的用户名>/index.json)。

修正后的完整Workflow

name: Install Latest Core Package
on:
  workflow_dispatch:
  push:
    branches:
      - SOF-4565-AutomatePackageUpdate
  # 可选:如果要监听repo1的发布事件触发,添加下面的repository_dispatch
  # repository_dispatch:
  #   types: [core-package-released]

jobs:
  update-package:
    runs-on: ubuntu-latest
    steps:
      - name: 拉取repo2代码
        uses: actions/checkout@v4
        with:
          persist-credentials: false
          fetch-depth: 0

      - name: 设置.NET SDK
        uses: actions/setup-dotnet@v4
        with:
          dotnet-version: '6.x' # 替换成你的项目使用的.NET版本

      - name: 配置GitHub NuGet源
        run: |
          dotnet nuget add source https://nuget.pkg.github.com/<你的GitHub用户名>/index.json -n github -u ${{ github.actor }} -p ${{ secrets.NUGET_TOKEN }} --store-password-in-clear-text

      - name: 更新核心包版本(针对package.config)
        run: nuget update ./<你的项目目录>/package.config -Id <你的核心包名称> -Source github
        # 若是SDK风格项目,替换为:
        # run: dotnet update ./<你的项目目录>/<项目名>.csproj package <你的核心包名称>

      - name: 安装依赖到bin目录
        run: nuget restore ./<你的项目目录>/package.config -PackagesDirectory ./bin/packages
        # SDK风格项目替换为:
        # run: dotnet restore ./<你的项目目录>/<项目名>.csproj --packages ./bin/packages

      - name: 提交并推送变更
        run: |
          git config --global user.name "GitHub Actions"
          git config --global user.email "actions@github.com"
          git add ./<你的项目目录>/package.config # SDK项目替换为对应的.csproj文件
          git commit -m "Auto-update core package to latest version"
          git remote set-url origin https://x-access-token:${{ secrets.GITHUB_TOKEN }}@github.com/<你的用户名>/repo2.git
          git push

注意事项

  • 确保secrets.NUGET_TOKEN拥有repo2的写入权限和GitHub Packages的读取权限
  • 替换示例中所有带<>的占位符,比如你的GitHub用户名、核心包名称、项目目录等
  • 如果要实现repo1发布后自动触发,需要在repo1的Workflow中添加repository_dispatch事件来触发这个Workflow,或者配置GitHub Packages的webhook

内容的提问来源于stack exchange,提问作者Ashwin Nambiar

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 17:55:15