NuGet.org 常见问题解答

许可条款

如果包未提供特定许可信息,有哪些默认许可条款?

每个包都需要受包中所含条款约束。 你应该在访问、下载或获取任何包前查看适用条款。 在 NuGet.org 中,请使用包页面中的“许可信息”链接

如果包未指定许可条款,请直接通过 NuGet.org 包页面上的“联系所有者”链接与包所有者联系。 Microsoft 不向用户授予任何第三方包提供程序的知识产权许可,同时不对第三方提供的信息承担任何责任。

管理 NuGet.org 上的包

在上传包元数据后是否可以再对其进行编辑?

NuGet 建议对所有的包签名。 包签名的设计原则是已签名包的内容不得改变,nuspec 也包括在内。 编辑包元数据会使 nuspec 发生更改,导致现有签名无效。 我们建议在创建包后修改现有工作流,这样则无需编辑包元数据。

请注意,列出的包依赖项从包本身自动生成,并且无法进行编辑。

此外,要测试和验证包,同时不在公共库中提供此包,最好将包上传到 int.nugettest.org。 API 终结点:https://apiint.nugettest.org/v3/index.json

我能否删除发布到 NuGet.org 的包?

通常,我们不支持删除发布到 NuGet.org 的包。详细了解有关删除包的策略

能否保留将来要发布的包的名称?

是的。 通过为帐户请求包 ID 前缀可以在 NuGet.org 中预留包 ID。 若要请求包 ID 前缀,请按照文档中的说明操作。

如何索取包的所有权?

如何与违反我的软件许可的包所有者进行交涉?

我们鼓励 NuGet 社区合作解决包所有者和其他软件所有者之间可能出现的任何争议。 我们制定了周密的争议解决流程,要求 NuGet.org 管理员调解之前应遵循此流程。

是否建议将测试包上传到 NuGet.org?

对于测试目的,可以使用 int.nugettest.org,或使用备用的公共 NuGet 服务器,如 myget.orgAzure DevOps

请注意,上传到 int.nugettest.org 的包可能不会保留。

可上传到 NuGet.org 的最大包大小是多少?

NuGet.org 允许的最大包大小为 250 MB,但我们建议尽可能将包保持在 1 MB 以下,通过依赖项将包链接在一起。 依据经验,仅包含一个程序集的包可以避免冲突。

NuGet 使用 HTTP 下载包,因此较大包比较小包有更高的安装失败风险。

依赖项可以在多个包之间进行共享,这样可减小 NuGet 包使用者的总下载大小。

依赖项通常是静态的,永远不会更改。 修复代码中的 bug 时,可能无需更新依赖项。 如果捆绑依赖项,最终将导致每一次都需要重新传输更大的包。 通过将 NuGet 包拆分成相关的依赖项,包使用者可以获得更细化的更新。

NuGet.org 不可访问

NuGet.org 支持哪些 SSL/TLS 版本和密码套件?

NuGet.org 支持 TLS 1.2 和以下密码套件:

  • TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
  • TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
  • TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384
  • TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256

为什么无法从 NuGet.org 还原包?

如果在从 NuGet.org 还原包时遇到暂时性故障,建议:

  • 使用具有更好的复原能力支持的最新版本的 NuGet 客户端。
  • 使用 NuGet 客户端的环境变量来增强 CI 机器上的重试策略。
环境变量 说明 注解
NUGET_ENABLE_ENHANCED_HTTP_RETRY 启用或禁用 NuGet 中的增强型 HTTP 重试。 可能的值为 true(默认值为 .NET CLI 6.0.300、NuGet CLI 6.2、Visual Studio 2022 版本 17.2)或 false
NUGET_ENHANCED_MAX_NETWORK_TRY_COUNT 配置启用增强型重试时应重试 HTTP 连接的最大次数。 表示要执行的重试次数的数字,默认值为 6
NUGET_ENHANCED_NETWORK_RETRY_DELAY_MILLISECONDS 配置启用增强型重试后重试 HTTP 连接之前等待的时间(以毫秒为单位)。 等待的毫秒数,默认值为 1000

备注

这些环境变量自 .NET CLI (.NET SDK) 6.0.100、NuGet CLI 6.0、Visual Studio 2022 版本 17.0 和相应的 MSBuild 版本起可用。 请参阅 NuGet 3.5 RTM 发行说明

重要

NuGet.org 建议 Alpine Linux 用户升级为 Alpine Linux 3.18.0 或更高版本。 这些版本在 DNS 解析程序中支持 TCP 回退。 如果使用仅通过 UDP 支持 DNS 的 Alpine Linux 旧版本,则访问 V3 API 时可能会遇到 DNS 故障。

如果 NuGet 客户端版本仍然失败,请联系支持人员,并提供其他连接故障排除信息,包括:

  • 使用的包源
  • 使用的 NuGet 客户端版本
  • 详细还原日志
  • MTR 或 Fiddler 跟踪(见下文)
  • 所在地理区域
  • 计算机是否设置了代理或防火墙?
  • 计算机是否位于云提供商的数据中心(Azure、AWS 等)? 如果是,请提供此提供商名称和区域。

捕获 MTR:

  • 下载 WinMTR

  • 输入 api.nuget.org 作为主机名,然后单击“启动”

  • 等待,直到“已发送”列 >= 100。

    捕获 MTR

  • 将文本复制到剪贴板。

捕获 Fiddler:

  • 安装最新版本的 Fiddler
  • 启动 Fiddler,使用“文件”>“捕获流量”菜单禁用捕获流量。
  • 删除所有会话(选中列表中的所有项,按 Delete 键)。
  • 配置 Fiddler 以捕获 HTTPS 流量,具体操作方式为:打开“工具”>“Fiddler 选项...”菜单,勾选“HTTPS”选项卡中的“解密 HTTPS 流量”
  • 关闭 Visual Studio。
  • 启用“文件”>“捕获流量”菜单。
  • 启动 Visual Studio 或 nuget.exe.exe,执行当前未运行的操作。 Fiddler 中应显示出这些操作所产生的流量。
  • 操作运行结束后,使用“文件”>“保存”>“所有会话”来存储捕获的会话。

注意:若要通过 Fiddler 路由 NuGet,可能需要将 HTTP_PROXY 环境变量设置为 http://127.0.0.1:8888

如果该操作失败,请尝试该 StackOverflow 文章中提到的方法

NuGet.org 帐户管理

如何恢复 NuGet.org 密码登录?

请注意,NuGet.org 密码登录已停止。 遗憾的是,NuGet.org 无法恢复密码帐户,只能使用个人 Microsoft 帐户 (MSA) 或 Azure Active Directory (AAD) 帐户登录 NuGet.org。

如果无法使用 Microsoft 登录,请按照步骤恢复 NuGet.org 帐户

如果你在所有权转移到其他帐户时需要帮助,请向 support@nuget.org 发送电子邮件。

哪个 Microsoft 帐户已链接到 NuGet.org 帐户?

如果忘记了与 NuGet.org 帐户关联的 Microsoft 帐户,请按照以下步骤获取帮助。

  1. 转到 NuGet.org 登录页面,并单击“需要登录协助?”链接
  2. 此操作会弹出一个帮助对话框。 按照该对话框中的步骤,找出与 NuGet.org 帐户的关联的 Microsoft 帐户。

如何更改用于登录 NuGet.org 的 Microsoft 帐户?

要更改登录 NuGet.org 所用的 Microsoft 帐户,请执行以下步骤。 假设电子邮件为 account1@outlook.com 的 Microsoft 帐户已关联到用户名为 MyNuGetAccount 的 NuGet.org 帐户。 现在需要将登录帐户更改为电子邮件为 account2@outlook.com 的另一 Microsoft 帐户

  1. 转到登录页面,单击“Microsoft 登录”,然后使用当前关联的 Microsoft 帐户(即 account1@outlook.com)登录

  2. 登录后,请转到帐户设置页面。

  3. 展开“登录帐户”部分。 单击“更改帐户”按钮

  4. 系统会重定向至 Microsoft 登录页面。 请使用要更改关联的帐户登录,即 account2@outlook.com。注意:登录过程中,可能需要单击“注销并使用另一个帐户登录”,才能使用其他 Microsoft 帐户登录。

  5. 如果看到如下类似错误,请查看 Microsoft 帐户已链接到另一个 NuGet.org 帐户,了解详细信息。

    无法将此 Microsoft 帐户更新为“account2 account2@outlook.com”。 原因可能是该帐户已链接到另一个 NuGet 帐户。 有关详细信息,请联系支持人员。

  6. 使用第二个帐户成功登录后,系统会重定向到 NuGet.org 帐户设置页面,现在应能看到新的 Microsoft 帐户关联作为登录帐户。 之后登录 NuGet.org 时应使用此帐户。

Microsoft 帐户已链接到另一个 NuGet.org 帐户。

尝试更改 Microsoft 登录时可能出现如下错误:

无法将此 Microsoft 帐户更新为“account2 account2@outlook.com”。 原因可能是该帐户已链接到另一个 NuGet 帐户。 有关详细信息,请联系支持人员。

假设对于用户名为 MyNuGetAccount1 的 NuGet.org 用户,要将其 Microsoft 帐户登录从 account1@outlook.com 更改为电子邮件为 account2@outlook.com 的另一 Microsoft 帐户。 更改过程中出现上述错误。

**上述错误表示什么意思?

该错误表示要更改到的 Microsoft 帐户已有一个与之关联的 NuGet.org 帐户,即上例中电子邮件为 <account2@outlook.com> 的 Microsoft 帐户与另一个 NuGet.org 帐户(例如,用户名为 MyNuGetAccount2)相关联。

无法将关联登录更改为已连接到另一个 NuGet.org 帐户的 Microsoft 帐户。

如果忘记了另一个 NuGet.org 帐户,如何才能将其找出?

登录页面上使用第二个 Microsoft 帐户登录。 这会登录到当前与第二个 Microsoft 帐户相关联的 NuGet.org 帐户。 然后可以通过此帐户查看已上传的包和进行帐户管理。

我不太关注第二个 NuGet.org 帐户,我希望将第二个 Microsoft 帐户更改为第一个 NuGet.org 帐户的登录名。 我该做什么?

如果不关注第二个 NuGet.org 帐户,并仍希望重新使用已关联的 Microsoft 帐户(电子邮件为 account2@outlook.com),

可以通过删除该 NuGet.org 帐户,解除其与此 Microsoft 帐户之间的关联。

  1. 对于第二个 NuGet.org 帐户 MyNuGetAccount2,请执行删除用户的步骤。
  2. 删除此帐户后,可以重试更改 Microsoft 帐户登录的步骤。

等一下,我也关注第二个帐户。 我不想失去此帐户,但同时也想更改第一个帐户的关联帐户。

为此,需要创建/使用第三个 Microsoft 帐户,假设该帐户的电子邮件为 account3@outlook.com

  1. 首先,你应该使用 NuGet.org 上的第二个 Microsoft 帐户登录 account2@outlook.com。请按照上述步骤更改关联的登录名,并将第三个 Microsoft 帐户与此 NuGet.org 帐户相关联。
  2. 完成后,电子邮件为 account2@outlook.com 的第二个 Microsoft 帐户即可关联到第一个 NuGet.org 帐户 (MyNuGetAccount1)。 按照上述相同步骤将 Microsoft 帐户更改为第二个 Microsoft 帐户。

使用 Microsoft 帐户登录时显示电子邮件已链接到另一个 Microsoft 帐户

尝试使用 Microsoft 帐户(例如,电子邮件为 account1@outlook.com 的帐户)登录时,可能出现如下错误:

电子邮件为 "account1@outlook.com" 的帐户已链接到另一个 Microsoft 帐户

在帐户设置中可以更新已链接的 Microsoft 帐户。

上述错误表示什么意思?

在 NuGet.org 上创建帐户后,该帐户具有一个关联的通信电子邮件地址。 此地址通常与所关联 Microsoft 帐户的电子邮件地址相同。 但是,可以选择指定不同的电子邮件地址进行通信。 因此,从技术上讲,可以将另一个 Microsoft 帐户(例如电子邮件为 account2@outlook.com 的帐户)链接到通信电子邮件地址为 account1@outlook.com 的 NuGet.org 帐户。

所以,上述错误表示已存在一个通信电子邮件地址为 account1@outlook.com 的 NuGet.org 帐户,但该帐户已关联到电子邮件地址不是 account1@outlook.com 的另一个 Microsoft 帐户

如何查找哪个 Microsoft 帐户已链接到此 NuGet.org 帐户?

应该按照登录协助流程找出哪个 Microsoft 帐户已链接到电子邮件地址为 account1@outlook.com 的 NuGet.org 帐户。

无法使用 Microsoft 登录,如何恢复 NuGet.org 帐户?

如果尝试使用登录帮助, 但无权访问与 NuGet.org 帐户关联的 Microsoft 帐户,请联系 Microsoft 帐户支持:

如何将 NuGet.org 帐户转换为组织?

如果想将帐户转换为组织帐户,请按照 nuget.org 上的组织文档中所述的步骤进行操作。

出现有关具有非托管组合的 AAD 帐户的 NuGet.org 登录问题?

使用电子邮件帐户域 (@yourdomain.com) 登录过程中如果出现类似如下的错误,请参阅以下步骤恢复 NuGet.org 帐户。

登录 AAD 帐户时出错

登录过程中出现的“非托管”状态是什么? 为什么会出现这种情况?

你的帐户似乎在之前注册为 Microsoft 个人帐户,且其使用正常,但现在此帐户似乎已在 Azure Active Directory(用于对 Microsoft 帐户执行身份验证的标识符)中注册为“非托管”租户。

出现此情况的原因可能是你或你所在组织的其他人员(电子邮件地址为 @yourdomain.com)注册了某个 AAD 集成服务,或者进行了 Azure Active Directory 自助注册,这会对所使用的 Microsoft 帐户域(对你而言为 @yourdomain.com)创建一个“非托管”租户。

怎样才可以恢复帐户?

当前,我们 (NuGet.org) 无法使用 Azure Active Directory 中含有此类“非托管”租户帐户对帐户进行身份验证。 我们正在寻找一种更佳的方式来对此类帐户进行身份验证。

如果要使用 Microsoft 帐户 (@yourdomain.com) 登录 NuGet.org,你(或你所在公司的管理员)需要通过执行 DNS 验证声明 AAD 所有者,以对电子邮件地址为“@yourdomain.com”的用户进行身份验证。 请按照 Azure Active directory 文档域管理员接管中的步骤操作。 完成后,应能开始正常登录。

如何更改 NuGet.org 帐户用户名?

可以通过要更新的帐户所附的电子邮件地址向 support@nuget.org 发送电子邮件,申请更改用户名。 请务必填写你想更改的旧用户名和新用户名。 然后,我们将审查你的请求,并在批准后得到你的确认,即我们将采取正确的行动,并且你了解后果。 确认后,我们将更改用户名。

重要

  • 旧用户名仍将保留。 你将无法再次使用旧用户名,即使更改大小写也不例外
  • 因此,我们也无法还原此更改。
  • 指向旧用户名配置文件页面(例如 https://www.nuget.org/profiles/OldUsername)的任何链接都不会重定向到新配置文件。
  • 帐户当前拥有的包版本仍将包含存储库签名中的旧用户名。 新的包版本将包含新的用户名。
  • 现有包版本中任何提及旧用户名或其他识别信息的作者提供的元数据将不会更改。
  • 声称信任你旧用户名的 NuGet 客户端策略不会隐式信任你新用户名发布的包。 配置了这些客户端策略的包使用者需要在尝试更新到新发布的包版本时手动更新它们以信任新用户名。

如何删除 NuGet.org 帐户?

请注意,要删除帐户,我们建议将你作为其唯一所有者的包的所有权进行转让。 要了解如何执行此操作,请阅读有关管理包所有者的更多信息。 这有助于我们加速处理请求。

如果要将帐户转换为组织,请按照将 NuGet.org 帐户转换为组织中所述的步骤进行操作。

重要

删除用户会导致以下结果:

  1. 用户名将被保留,其他人无法重用它来创建个人帐户或组织帐户
  2. 撤销关联的 API 密钥。
  3. 删除作为任何子包所有者的帐户。
  4. 将所有之前存在的 ID 前缀预留与此帐户取消关联。
  5. 删除作为任何组织成员的帐户。

请按照以下步骤继续进行帐户删除。

  1. 使用要删除的帐户登录到 NuGet.org
  2. 单击此 URL:https://www.nuget.org/account/delete,然后按照步骤提交帐户删除请求。

我们的客户支持人员将处理请求并执行帐户删除操作。

删除 Microsoft 帐户时,我的 NuGet.org 帐户会发生什么情况?

删除用于登录 nuget.org 帐户的 Microsoft 或 Azure Active Directory 帐户时,也会删除 nuget.org 帐户。 nuget.org 客户支持部门将在 Microsoft 帐户删除之日起 30 天内完成帐户删除操作。

如果你有与你帐户关联的包,我们会在 3 个工作日后通知你,然后继续删除,并提供帮助将包转移到其他 nuget.org 帐户。