本文适用于: ✔️ .NET Core 3.1 SDK 及更高版本
名称
dotnet nuget push - 将包推送到服务器并发布它。
概要
dotnet nuget push [<ROOT>] [--allow-insecure-connections] [-d|--disable-buffering] [--force-english-output]
[--interactive] [-k|--api-key <API_KEY>] [-n|--no-symbols]
[--no-service-endpoint] [-s|--source <SOURCE>] [--skip-duplicate]
[-sk|--symbol-api-key <API_KEY>] [-ss|--symbol-source <SOURCE>]
[-t|--timeout <TIMEOUT>]
[--configfile <FILE>]
dotnet nuget push -h|--help
DESCRIPTION
该 dotnet nuget push 命令将包推送到服务器并发布它。 推送命令使用系统 NuGet 配置文件或配置文件链中找到的服务器和凭据详细信息。 有关配置文件的详细信息,请参阅 “配置 NuGet 行为”。 NuGet 的默认配置是通过加载 %AppData%\NuGet\NuGet.config (Windows) 或 $HOME/.nuget/NuGet/NuGet.Config (Linux/macOS)获取的,然后从驱动器的根目录开始加载任何 nuget.config 或 .nuget\nuget.config ,并在当前目录中结束。
该命令推送现有包。 它不会创建包。 若要创建包,请使用 dotnet pack。
分层文件夹结构
此命令可以将包存储在分层文件夹结构中,建议优化性能。 当发布到本地文件夹(源)时, nuget add 它将包存储在分层文件夹结构中,如果源中至少有一个包位于分层文件夹结构中,则同样。 如果源中已有分层文件夹结构化包, dotnet nuget push 则遵循该结构。 因此,如果要使用 .NET CLI 而不是 NuGet CLI 发布到本地源:
- 发布第一个包之前,请转到全局包文件夹,在 %userprofile%.nuget\packages,然后选择包 ID 的根文件夹。它可以是不属于框架的任何包,如 .NET 标准或 ASP.NET。
- 将所选包文件夹复制到本地源的根文件夹中。
- 用于
dotnet nuget push将包发布到本地源。 - 现在可以删除之前复制的文件夹,并可以自由地用于
dotnet nuget push发布到本地源。
或者,对第一个包使用 NuGet CLI,然后可用于 dotnet nuget push 其余包。 有关详细信息,请参阅 本地源。
论据
ROOT指定要推送的包的文件路径。
选项
--allow-insecure-connections允许推送到 HTTP 源(不安全)。
-d|--disable-buffering在推送到 HTTP(S) 服务器以减少内存使用量时禁用缓冲。
--force-english-output强制应用程序使用基于英语的固定区域性运行。
-?|-h|--help打印出有关如何使用命令的说明。
--interactive允许命令停止并等待用户输入或操作。 例如,完成身份验证。 自 .NET Core 3.0 SDK 起可用。
-k|--api-key <API_KEY>服务器的 API 密钥。
-n|--no-symbols不推送符号(即使存在)。
--no-service-endpoint不将“api/v2/package”追加到源 URL。
-s|--source <SOURCE>指定服务器 URL。 NuGet 标识 UNC 或本地文件夹源,只需将文件复制到那里,而不是使用 HTTP 进行推送。
重要
从 NuGet 3.4.2 开始,这是必需参数,除非 NuGet 配置文件指定值
DefaultPushSource。 有关详细信息,请参阅配置 NuGet 行为。--skip-duplicate将多个包推送到 HTTP(S) 服务器时,将任何 409 冲突响应视为警告,以便其他推送可以继续。
-sk|--symbol-api-key <API_KEY>符号服务器的 API 密钥。
-ss|--symbol-source <SOURCE>指定符号服务器 URL。
-t|--timeout <TIMEOUT>指定推送到服务器的超时(以秒为单位)。 默认为 300 秒(5 分钟)。 指定 0 将应用默认值。
--configfile要使用的 NuGet 配置文件 (nuget.config)。 如果指定,则只使用此文件中的设置。 如果不指定,将使用当前目录中的配置文件的层次结构。 有关详细信息,请参阅常见的 NuGet 配置。
例子
使用 API 密钥将 foo.nupkg 推送到 NuGet 配置文件中指定的默认推送源:
dotnet nuget push foo.nupkg -k 4003d786-cc37-4004-bfdf-c4f3e8ef9b3a将 foo.nupkg 推送到官方 NuGet 服务器,并指定 API 密钥:
dotnet nuget push foo.nupkg -k 4003d786-cc37-4004-bfdf-c4f3e8ef9b3a -s https://api.nuget.org/v3/index.json将 foo.nupkg 推送到自定义推送源
https://customsource,并指定 API 密钥:dotnet nuget push foo.nupkg -k 4003d786-cc37-4004-bfdf-c4f3e8ef9b3a -s https://customsource/将 foo.nupkg 推送到 NuGet 配置文件中指定的默认推送源:
dotnet nuget push foo.nupkg将 foo.symbols.nupkg 推送到默认符号源:
dotnet nuget push foo.symbols.nupkg将 foo.nupkg 推送到 NuGet 配置文件中指定的默认推送源,超时为 360 秒:
dotnet nuget push foo.nupkg --timeout 360将当前目录中的所有 .nupkg 文件推送到 NuGet 配置文件中指定的默认推送源:
dotnet nuget push "*.nupkg"注释
如果此命令不起作用,可能是由于 SDK 旧版本中存在的 bug(.NET Core 2.1 SDK 和早期版本)。 若要解决此问题,请升级 SDK 版本或改为运行以下命令:
dotnet nuget push "**/*.nupkg"注释
执行文件导航的 bash 等 shell 需要封闭引号。 有关详细信息,请参阅 NuGet/Home#4393。
将所有 .nupkg 文件推送到 NuGet 配置文件中指定的默认推送源,即使 HTTP(S) 服务器返回了 409 冲突响应:
dotnet nuget push "*.nupkg" --skip-duplicate将当前目录中的所有 .nupkg 文件推送到本地源目录:
dotnet nuget push "*.nupkg" -s c:\mydir有关推送到 Azure Artifacts 的信息, 请参阅 Azure Artifacts 的推送文档。