如何使用 .NET CLI 创建 NuGet 包

注释

下面显示了使用 Unix 的命令行示例。 此处所示的 dotnet pack 命令在 Windows 上的工作方式相同。

.NET Standard 和 .NET Core 库应作为 NuGet 包分发。 事实上,这是所有 .NET Standard 库的分发和使用方式。 使用dotnet pack命令可以最容易地完成这一任务。

假设你刚刚编写了一个真棒的新库,你希望通过 NuGet 分发。 可以创建一个带跨平台工具的 NuGet 包来实现这个目的! 以下示例假定一个名为 SuperAwesomeLibrary 的库作为目标 netstandard1.0

如果有可传递依赖项(即依赖于另一个包的项目),请确保在创建 NuGet 包之前使用 dotnet restore 命令还原整个解决方案的包。 未能执行此作将导致 dotnet pack 命令无法正常工作。

无需运行 dotnet restore,因为它由所有需要还原的命令隐式运行,如 dotnet newdotnet builddotnet rundotnet testdotnet publishdotnet pack。 若要禁用隐式还原,请使用 --no-restore 选项。

在某些显式还原有意义的场景中,dotnet restore 命令仍然有用,比如在 Azure DevOps Services 中进行持续集成构建时,或在需要显式控制还原发生时间的生成系统中。

有关如何管理 NuGet 源的信息,请参阅 dotnet restore 文档

确保包还原后,可以导航到库所在的目录:

cd src/SuperAwesomeLibrary

然后,它只是命令行中的单个命令:

dotnet pack

/bin/Debug 文件夹现在如下所示:

$ ls bin/Debug
netstandard1.0/
SuperAwesomeLibrary.1.0.0.nupkg
SuperAwesomeLibrary.1.0.0.symbols.nupkg

这将生成能够进行调试的包。 如果想要用发布版本的二进制文件生成 NuGet 包,只需添加 --configuration (或 -c)选项,并使用 release 作为参数。

dotnet pack --configuration release

/bin 文件夹现在将包含一个release文件夹,其中含有含发布版本的 NuGet 包和二进制文件:

$ ls bin/release
netstandard1.0/
SuperAwesomeLibrary.1.0.0.nupkg
SuperAwesomeLibrary.1.0.0.symbols.nupkg

现在,你拥有发布 NuGet 包所需的文件!

不要把dotnet packdotnet publish混淆。

务必注意,不是任何时候都涉及 dotnet publish 命令。 该 dotnet publish 命令用于在同一捆绑包中部署具有其所有依赖项的应用程序 -- 不用于通过 NuGet 分发和使用 NuGet 包。

另请参阅