如何将公开GitHub仓库中的C#类库发布至NuGet?
手动发布C#类库到NuGet的步骤
1. 准备类库项目
- 确保你的C#类库是.NET标准/.NET Core/.NET 5+项目(NuGet对这类项目支持最优)
- 清理并编译项目:在解决方案目录打开终端,运行
dotnet clean后执行dotnet build -c Release,确保编译无错误 - 检查并完善项目文件(.csproj)的配置,添加或确认以下核心节点(缺失则补充):
这些配置会直接展示在NuGet平台的包详情页,务必填写准确。<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>
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自动化流程,避免重复手动操作:
- 在你的GitHub仓库的
.github/workflows目录下新建nuget-publish.yml文件 - 填入以下内容(根据你的项目.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
- 进入GitHub仓库的设置页面,找到“Secrets and variables”下的Actions选项,添加名为
NUGET_API_KEY的密钥,值为你之前获取的NuGet API密钥 - 后续发布新版本时,只需给仓库打对应版本标签(如
git tag v1.0.1,再执行git push origin v1.0.1),流程会自动完成打包并推送到NuGet平台
内容的提问来源于stack exchange,提问作者David Thielen
相关产品推荐
相关产品推荐

