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

如何将公开GitHub仓库中的C#类库发布至NuGet?

手动发布C#类库到NuGet的步骤

1. 准备类库项目

  • 确保你的C#类库是.NET标准/.NET Core/.NET 5+项目(NuGet对这类项目支持最优)
  • 清理并编译项目:在解决方案目录打开终端,运行 dotnet clean 后执行 dotnet build -c Release,确保编译无错误
  • 检查并完善项目文件(.csproj)的配置,添加或确认以下核心节点(缺失则补充):
    <PropertyGroup>
      <PackageId>你的包唯一ID(格式建议:个人/组织名.库名,比如:JohnDoe.StringUtils)</PackageId>
      <Version>1.0.0</Version> <!-- 遵循语义化版本规范,首次发布推荐用1.0.0 -->
      <Authors>你的名字/组织名</Authors>
      <Description>类库的功能简介,清晰说明能解决什么问题</Description>
      <PackageProjectUrl>你的GitHub仓库地址</PackageProjectUrl>
      <RepositoryUrl>你的GitHub仓库地址</RepositoryUrl>
      <RepositoryType>git</RepositoryType>
      <PackageLicenseExpression>MIT</PackageLicenseExpression> <!-- 公开无限制场景首选MIT协议,也可选用其他开源协议 -->
      <PackageTags>相关搜索标签,比如:csharp, utility, string-processing</PackageTags>
    </PropertyGroup>
    
    这些配置会直接展示在NuGet平台的包详情页,务必填写准确。

2. 生成NuGet包

  • 终端执行命令:dotnet pack -c Release,执行完成后会在项目的bin/Release目录下生成.nupkg(主包)和.snupkg(符号包,用于调试)两个文件
  • 如果你用Visual Studio开发,也可以右键点击项目 → 选择“打包”选项,同样会生成上述文件

3. 获取NuGet API密钥

  • 在NuGet官方平台注册账号(支持用GitHub账号快捷登录)
  • 登录后进入个人设置页面,找到API密钥管理入口,创建新密钥
  • 给密钥命名,选择“Push”权限,范围设置为“Global”(适配公开包发布),生成后务必妥善保存密钥——它只会显示一次

4. 上传并发布包

方式一:用dotnet命令推送

  • 在终端运行:dotnet nuget push "bin/Release/你的包文件名.nupkg" --api-key 你的NuGetAPI密钥 --source https://api.nuget.org/v3/index.json
  • 若要同时推送符号包以支持调试,可追加参数:--symbol-api-key 你的NuGetAPI密钥 --symbol-source https://nuget.smbsrc.net/(当前NuGet平台默认支持符号包,部分场景可省略此步骤)

方式二:手动上传到NuGet平台

  • 登录NuGet官方平台,点击右上角头像,选择“上传包”选项
  • 选择本地生成的.nupkg文件上传,等待平台完成验证
  • 验证通过后,包会在数分钟内同步到NuGet的搜索系统中

5. 验证发布结果

  • 等待10-15分钟后,在NuGet平台搜索你的包ID,确认包已上线且详情页信息与配置一致
  • 新建一个测试项目,通过NuGet安装该包,验证功能是否正常运行

可选:极简自动化发布(GitHub Actions)

如果后续偶尔需要更新版本,可配置一套简单的GitHub自动化流程,避免重复手动操作:

  1. 在你的GitHub仓库的.github/workflows目录下新建nuget-publish.yml文件
  2. 填入以下内容(根据你的项目.NET版本调整dotnet-version值):
name: Publish NuGet Package
on:
  push:
    tags:
      - 'v*' # 仅当推送v开头的版本标签(如v1.0.1)时触发流程

jobs:
  publish:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Setup .NET
        uses: actions/setup-dotnet@v4
        with:
          dotnet-version: '8.0.x' # 修改为你的项目使用的.NET版本
      - name: Build and Pack
        run: dotnet pack -c Release -o ./nupkg
      - name: Publish to NuGet
        run: dotnet nuget push ./nupkg/*.nupkg --api-key ${{ secrets.NUGET_API_KEY }} --source https://api.nuget.org/v3/index.json
  1. 进入GitHub仓库的设置页面,找到“Secrets and variables”下的Actions选项,添加名为NUGET_API_KEY的密钥,值为你之前获取的NuGet API密钥
  2. 后续发布新版本时,只需给仓库打对应版本标签(如git tag v1.0.1,再执行git push origin v1.0.1),流程会自动完成打包并推送到NuGet平台

内容的提问来源于stack exchange,提问作者David Thielen

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 02:25:10