dotnet nuget push

本文适用于: ✔️ .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 的推送文档