在公共源中使用上游源

Azure Artifacts 使开发人员能够从单个源管理其依赖项。 使用上游源,可以从源和公共注册表(例如 NuGet.org)使用包,以及 npmjs.com。 本文将指导如何进行以下操作:

  • 创建公共源
  • 启用上游源
  • 添加新上游源

先决条件

重要

包锁定文件有助于重现生成,并最大程度地减少使用公共源时将提示匿名用户输入凭据的方案。

创建公共源

公共源是公共项目中的项目范围源。 公共源继承宿主项目的可见性设置。

  1. 登录到 Azure DevOps 组织,然后选择公共项目。

  2. 选择“项目”,然后选择“创建源”

    显示 Azure Artifacts 中的“创建源”按钮的屏幕截图。

  3. 为源指定名称,然后选择 Project:PublicProject(推荐)作为其范围。

    显示如何创建新的公共源的屏幕截图。

  4. 完成操作后,选择“创建”

添加上游源

  1. 登录到 Azure DevOps 组织,然后选择公共项目。

  2. 选择“项目”,然后选择你的公共源。

  3. 选择齿轮图标齿轮图标以访问源设置

  4. 选择“ 上游源”,然后选择“ 添加上游”。

    显示如何在公共源中添加上游源的屏幕截图。

  5. 选择上游源类型。 在此示例中,我们将添加 NuGet.org 作为上游源。

    显示不同类型的上游源的屏幕截图。

  6. 配置源,然后在完成后选择“ 保存 ”。

    显示如何配置上游源的屏幕截图。

  7. 选择“保存”以保存新上游源。

    显示如何保存新添加的上游源的屏幕截图。

重要

公共源不支持上游专用 Artifacts 源。 如果使用公共 Azure Artifacts 源,则只能上游公共注册表(NuGet.org、npmjs)或其他公共 Azure Artifacts 源。

还原包

在提升的命令提示符处,运行以下命令:

nuget.exe restore

注意

必须是源和上游读取器(协作者)或更高版本才能从上游安装新的包版本。 匿名用户只能安装其源中存在的包。

问答

问:我尝试还原我的包,但我不断收到 401 未经授权的错误?

只能由对源具有适当权限的经过身份验证和授权的标识更改源的内容。 这包括将包从上游源保存到源中。 未经身份验证的(匿名)用户可以下载已保存到源中的包,但无法将新包从上游保存到源中。

项目的维护人员应将所有所需的包版本保存到公共源中。 这可以通过使用标识还原项目,以 在出现提示时向 源提供凭据, 并确保 所使用的标识具有 公共源的源和上游读取者(协作者) 或更高权限来完成。

如果正在还原项目的包的匿名用户被凭据请求(401 响应)反复阻止,则以下方法将减少或消除该问题:

  1. 避免在项目配置中使用包版本范围。 显式包版本将确保打包客户端仅请求所需的确切版本。

  2. 如果受支持,请使用打包生态系统的锁文件,以便打包客户端仅在还原/安装操作期间请求项目所需的特定版本。

问:我尝试使用 Visual Studio 还原包,但我注意到它们是从其他源拉取的?

答:确保 Visual Studio 使用的是 nuget.config 文件中引用的源,而不是从本地 NuGet 包管理器引用的源。 有关更多详细信息,请参阅包源。

还可以使用 NuGet CLI 通过运行以下命令来强制 NuGet 使用配置文件中的源:

nuget restore -config <PATH_TO_NUGET_CONFIG_FILE>