注释
下面显示了使用 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 new
、dotnet build
、dotnet run
、dotnet test
、dotnet publish
和 dotnet 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 pack
和dotnet publish
混淆。
务必注意,不是任何时候都涉及 dotnet publish
命令。 该 dotnet publish
命令用于在同一捆绑包中部署具有其所有依赖项的应用程序 -- 不用于通过 NuGet 分发和使用 NuGet 包。