dotnet nuget push

本文适用于: ✔️ .NET Core 3.1 SDK 及更高版本

“属性”

dotnet nuget push - 将包推送到服务器,并将其发布。

摘要

dotnet nuget push [<ROOT>] [-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>]

dotnet nuget push -h|--help

描述

dotnet nuget push 将包推送到服务器,并将其发布。 push 命令使用在系统的 NuGet 配置文件或配置文件链中找到的服务器和凭据详细信息。 有关配置文件的详细信息,请参阅 Configuring NuGet Behavior(配置 NuGet 行为)。 通过加载 %AppData%\NuGet\NuGet.config (Windows) 或 $HOME/.nuget/NuGet/NuGet.Config (Linux/macOS) 获得 NuGet 的默认配置,然后加载任意 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

    指定要推送的包的文件路径。

选项

  • -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 时应用默认值。

示例

  • 将 foo.nupkg 推送到 NuGet 配置文件中指定的默认推送源(使用 API 密钥):

    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(.NET Core 2.1 SDK 及更早版本)中的 bug 导致的。 要解决此问题,请升级 SDK 版本或改为运行以下命令:dotnet nuget push "**/*.nupkg"

    注意

    用于执行文件组合的 bash 等 shell 需要用引号括起来。 有关详细信息,请参阅 NuGet/Home#4393

  • 将所有 .nupkg 文件推送到 NuGet 配置文件中指定的默认推送源,即使 HTTP(S) 服务器返回“409 Conflict”响应也是如此:

    dotnet nuget push "*.nupkg" --skip-duplicate
    
  • 将当前目录中的所有 .nupkg 文件推送到本地源目录 :

    dotnet nuget push "*.nupkg" -s c:\mydir
    
  • 有关推送到 Azure Artifacts 的信息,请参阅 Azure Artifacts 的推送文档