导读:本期聚焦于小伙伴创作的《C#如何创建NuGet包?C#打包和发布NuGet库教程实战》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《C#如何创建NuGet包?C#打包和发布NuGet库教程实战》有用,将其分享出去将是对创作者最好的鼓励。

在C#开发中,将通用功能封装成NuGet包可以极大提升代码的复用性,也能方便团队协作时共享公共组件。下面我们将通过一个实际的类库项目,完整演示从创建项目到发布NuGet包的全过程。

C#如何创建NuGet包?C#打包和发布NuGet库教程实战

一、准备类库项目

首先我们需要创建一个C#类库项目,作为要打包的NuGet包内容。打开Visual Studio,选择创建新项目,搜索类库(.NET_Standard)或者类库(.NET),根据目标使用场景选择对应的框架版本,这里以.NET Standard 2.0为例,创建名为MyUtils的类库项目。

在项目中添加一个简单的工具类,用于后续验证包的功能:

using System;

namespace MyUtils
{
    public class StringHelper
    {
        /// <summary>
        /// 判断字符串是否为空或空白
        /// </summary>
        /// <param name="input">输入字符串</param>
        /// <returns>是否为空或空白</returns>
        public static bool IsNullOrWhiteSpace(string input)
        {
            return string.IsNullOrWhiteSpace(input);
        }
    }
}

二、配置NuGet包信息

NuGet包需要包含基本的元数据信息,比如包名、版本、作者、描述等,这些信息可以在项目文件(.csproj)中配置。右键点击项目,选择编辑项目文件,添加如下配置:

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFramework>netstandard2.0</TargetFramework>
    <!-- 包的基本信息 -->
    <PackageId>MyUtils.Core</PackageId>
    <Version>1.0.0</Version>
    <Authors>TestAuthor</Authors>
    <Company>TestCompany</Company>
    <Description>通用字符串处理工具类库</Description>
    <PackageTags>C#,工具,字符串处理</PackageTags>
    <PackageLicenseExpression>MIT</PackageLicenseExpression>
    <GeneratePackageOnBuild>false</GeneratePackageOnBuild>
  </PropertyGroup>

</Project>

上述配置中,PackageId是NuGet包的唯一标识,后续发布到仓库后其他项目通过这个名称引用;Version是包的版本号,每次更新需要递增;GeneratePackageOnBuild设置为false表示不自动打包,我们后续手动执行打包操作。

三、本地打包生成NuGet包

配置完成后,我们可以通过dotnet命令行工具进行打包。打开终端,切换到项目所在目录,执行以下命令:

dotnet pack -c Release

命令执行成功后,会在项目的bin/Release目录下生成.nupkg格式的文件,这就是我们创建的NuGet包。如果要验证包的内容是否正确,可以使用NuGet Package Explorer工具打开该文件查看内部的元数据和依赖信息。

四、发布NuGet包到仓库

生成包之后,我们可以将其发布到NuGet官方仓库或者私有的NuGet仓库。这里以发布到NuGet官方仓库为例,首先需要到NuGet官网获取自己的API Key,然后在终端执行发布命令:

dotnet nuget push bin/Release/MyUtils.Core.1.0.0.nupkg --api-key 你的API_Key --source https://api.nuget.org/v3/index.json

如果是发布到私有仓库,只需要将--source后面的地址替换为私有仓库的地址即可。发布成功后,其他项目就可以通过NuGet包管理器搜索MyUtils.Core来安装使用这个包了。

五、注意事项

  • 包版本号遵循语义化版本规范,格式为主版本.次版本.修订号,重大变更升级主版本,新增功能升级次版本,bug修复升级修订号。
  • 如果类库依赖其他NuGet包,需要在项目文件中通过PackageReference添加依赖,打包时会自动将依赖信息写入包元数据。
  • 发布到官方仓库的包需要遵守NuGet的相关规范,避免发布包含恶意代码或者侵权内容的包。

引用测试示例

其他项目安装该包后,可以通过以下代码使用我们封装的功能:

using System;
using MyUtils;

class Program
{
    static void Main()
    {
        string testStr = "  ";
        bool result = StringHelper.IsNullOrWhiteSpace(testStr);
        Console.WriteLine($"字符串是否为空或空白:{result}");
    }
}

C#NuGet包打包NuGet发布类库修改时间:2026-07-22 19:39:28

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。