C# 如何创建 NuGet 包(.NET Framework)

Visual Studio 2022

1、创建class类库

1.1 新建Class类库 MyPackage

1. 在 Visual Studio 中,选择新建>文件>”Project,搜索“class library”,选择 C# 的匹配模板。


2. 将“框架”设置为“.NET Framework 4.0” 。


3. 根据需要创建一个工具类


1.2 build工程,找到工程目录下生成的dll文件


2、利用 NuGetPackageExplorer 工具进行打包

1. 打开 NuGetPackageExplorer 界面

2. 选择新建一个 package


3. 编辑好包的信息,并将新建 lib 文件夹,添加已经生成好的 dll 文件。


4. 相关的folder文件夹可以在鼠标右键空白处添加


lib\net40 指的是 MyPackage 支持的目标框架是 .NET Framework 4.0这里根据实际情况添加,也可以支持多种目标框架版本。

保存为 MyPackage.1.0.0.nupkg,这样一个 nuget 包就打包好了。


3、利用 nuget.exe 进行打包

3.1 下载 nuget.exe

打开网址 https://www.nuget.org/downloads,选择 nuget.exe,这里下载最新版。

3.2 nuget.exe 打包

nuget.exe 复制到 MyPackage 工程目录下,如图示


在当前文件夹打开 cmd 命令,或者使用 cd 命令进入到当前目录

执行命令 nuget.exe pack MyPackage.csproj,会在当前目录下自动创建 MyPackage.1.0.0.nupkg


4、 利用 .nuspec 文件进行打包

4.1 利用 nuget.exe 创建 .nuspec 文件

MyPackage 工程目录下执行 cmd 命令

执行 nuget.exe spec MyPackage,会在当前目录下生成 MyPackage.nuspec 文件,右键已文本文档打开,会看到 .nuspec 文件的格式,基于这个格式,也可以手动创建 .nuspec 文件。


编辑 MyPackage.nuspec 文件的基本信息





<?xml version="1.0"?>

<package >

  <metadata>

    <id>MyPackage</id>

    <version>1.0.0</version>

    <title>MyPackage for .NET</title>

    <authors>Jarvis</authors>

    <owners>Jarvis</owners>

    <requireLicenseAcceptance>false</requireLicenseAcceptance>

    <description>This is library description</description>

    <copyright>Copyright © 2022 Jarvis. All Rights Reserved.</copyright>

    <language>en-US</language>

    <tags>MyPackage</tags>

  </metadata>

  <files>

    <file src="bin\Debug\MyPackage.dll" target="lib\net40\MyPackage.dll" />

  </files>

</package>


执行命令 nuget.exe pack MyPackage.nuspec -version 1.0.0,在当前目录下会生成 MyPackage.1.0.0.nupkg 文件

-version nuget包发布的版本


4.2 更多nuget相关命令

https://learn.microsoft.com/en-US/nuget/reference/nuget-exe-cli-reference


5、上传包到NuGet服务器

执行 cmd 命令 nuget.exe push MyPackage.1.0.0.nupkg -Source http://127.0.0.1:8053/nuget -ApiKey 123456

-Source 指定服务器 URL

-ApiKey 目标存储库的 API 密钥。


发布命令支持nuget.orgnuget私有仓库

通过 NuGetPackageExplorer 上传

选择“File->Publish


填写服务器地址及 ApiKey,点击发布


发布成功会有成功提示


Visual Studio 中浏览 NuGet 包信息


引用第三方NuGet

通常我们在开发类库的时候,难免引用其他 NuGet 包作为依赖使用,当引用其他 NuGet 包时,该如何打包我们自己的 NuGet 包?

1、在 MyPackage 引用 Newtonsoft.Json

Install-Package Newtonsoft.Json -Version 6.0.5

新建一个 json 的工具类

namespace MyPackage

{

    // 引用 Newtonsoft.Json.dll

    /// <summary>

    /// JsonTools

    /// </summary>

    public class JsonTools

    {

        /// <summary>

        /// 从一个对象信息生成Json 

        /// </summary>

        /// <param name="obj">对象</param>

        /// <returns></returns>

        public static string ObjectToJson(object obj)

        {

            return Newtonsoft.Json.JsonConvert.SerializeObject(obj);

        }

 

        /// <summary>

        ///  从一个Json串生成对象信息 

        /// </summary>

        /// <param name="jsonString">json字符串</param>

        /// <param name="obj"></param>

        /// <returns></returns>

        public static object JsonToObject(string jsonString, object obj)

        {

            return Newtonsoft.Json.JsonConvert.DeserializeObject(jsonString, obj.GetType());

        }

    }

}


修改 MyPackage 程序集版本号


2、利用 NuGetPackageExplorer 工具进行打包

1. 打开 NuGetPackageExplorer 界面


2. 选择新建一个 package


3. 编辑好包的信息,并将新建 lib 文件夹,添加已经生成好的 dll 文件。


4. 相关的folder文件夹可以在鼠标右键空白处添加


lib\net40 指的是 MyPackage 支持的目标框架是 .NET Framework 4.0这里根据实际情况添加,也可以支持多种目标框架版本。

保存为 MyPackage.1.0.0.nupkg,这样一个nuget包就打包好了。


5. 添加第三方库


添加依赖的 NuGet 包及版本


保存当前 MyPackage.1.0.1.nupkg 文件


3、利用 nuget.exe 进行打包

3.1 下载 nuget.exe

打开网址 https://www.nuget.org/downloads,选择 nuget.exe,这里下载最新版。


3.2 nuget.exe 打包

nuget.exe 复制到 MyPackage 工程目录下,如图示


在当前文件夹打开 cmd 命令,或者使用 cd 命令进入到当前目录

执行命令 nuget.exe pack MyPackage.csproj –Version 1.0.1,会在当前目录下自动创建 MyPackage.1.0.1.nupkg

-Version 替代文件中的 .nuspec 版本号。


4、 利用 .nuspec 文件进行打包

4.1 利用 nuget.exe 创建 .nuspec 文件

MyPackage 工程目录下执行 cmd 命令

执行 nuget.exe spec MyPackage,会在当前目录下生成 MyPackage.nuspec 文件,右键已文本文档打开,会看到 .nuspec 文件的格式,基于这个格式,也可以手动创建 .nuspec 文件。


编辑 MyPackage.nuspec 文件的基本信息




<?xml version="1.0"?>

<package >

  <metadata>

    <id>MyPackage</id>

    <version>1.0.1</version>

    <title>MyPackage for .NET</title>

    <authors>Jarvis</authors>

    <owners>Jarvis</owners>

    <requireLicenseAcceptance>false</requireLicenseAcceptance>

    <description>This is library description</description>

    <copyright>Copyright © 2022 Jarvis. All Rights Reserved.</copyright>

    <language>en-US</language>

    <tags>MyPackage</tags>

    <dependencies>

      <group targetFramework=".NETFramework4.0">

        <dependency id="Newtonsoft.Json" version="6.0.5" />

      </group>

    </dependencies>

  </metadata>

  <files>

    <file src="bin\Debug\MyPackage.dll" target="lib\net40\MyPackage.dll" />

  </files>

</package>



执行命令 nuget.exe pack MyPackage.nuspec -version 1.0.1,在当前目录下会生成 MyPackage.1.0.1.nupkg 文件

-version nuget包发布的版本


5、上传包到NuGet服务器

执行 cmd 命令 nuget.exe push MyPackage.1.0.1.nupkg -Source http://127.0.0.1:8053/nuget -ApiKey 123456

-Source 指定服务器 URL

-ApiKey 目标存储库的 API 密钥。


Visual Studio 中浏览 NuGet 包信息,安装引用时会自动安装依赖的第三方组件库。


作者最新文章
C# 使用 CSVHelper 操作 csv 文件, .net core, .net framework 读取写入 csv 文件
C# 实现字符串文本换行的方法,文本如何换行
C# 如何循环读取文件每一行文本内容
C# DateTime AddMonths 的错误用法导致跳过日期
C# 全角转换半角,半角转换为全角