承载自己的 NuGet 源
可能希望将包仅发布到有限受众(例如,组织或工作组),而不是将其公开发布。 此外,一些公司可能希望限制其开发人员可以使用的第三方库,使他们从有限包源(而不是 nuget.org)中提取内容。
对于所有此类目的,NuGet 支持通过以下方式设置专用包源:
- 本地源:包只需放置在合适的网络文件共享中,理想情况下使用
nuget init
和nuget add
创建分层文件夹结构 (NuGet 3.3+)。 有关详细信息,请参阅本地源。 - NuGet.Server:通过本地 HTTP 服务器提供包。 有关详细信息,请参阅 NuGet.Server。
- NuGet 库:在使用 NuGet 库项目 (github.com) 的 Internet 服务器上承载包。 NuGet 库提供用户管理和功能,如丰富的 Web UI,它允许从浏览器中搜索和浏览包,这与 nuget.org 相似。
另外还有其他几种 NuGet 宿主产品支持远程专用源,例如 Azure Artifacts 和 GitHub 包注册表。 下面列出了此类产品:
- JFrog 的 Artifactory。
- Azure Artifacts 也可通过 Team Foundation Server 2017 以及更高版本获得。
- BaGet 构建与 ASP.NET Core 基础上的 NuGet V3 服务器的开源实现
- BaGetter,一个开放源代码和社区驱动的 BaGet 分支
- Bytesafe,一个全托管包与供应链安全平台
- Cloudsmith:一种完全托管的包管理 SaaS
- Feedz.io,一种全托管包管理 SaaS
- Gitea,一个开源、可自托管 Git 服务,它支持将 NuGet 用作 包注册表
- GitHub 包注册表
- GitLab 包注册表
- JetBrains Space
- LiGet:在 docker 中 kestrel 上运行的 NuGet V2 服务器的开放源代码实现
- MyGet
- Sonatype 中的 Nexus 存储库 OSS。
- NuGet 服务器(开放源代码),与 Inedo 的 NuGet 服务器相似的开放源代码实现
- NuGet 服务器,Inedo 的社区项目
- Inedo 的 ProGet
- Sleet(开放源代码 NuGet V3 静态源生成器)
- JetBrains 的 TeamCity。
无论包是什么样的承载方式,均可将其添加到 NuGet.Config
中的可用源列表以便访问。 此操作可在 Visual Studio 中执行(如包源中所述),或使用 nuget sources
从命令行执行操作。 源的路径可以是本地文件夹路径名、网络名称或 URL。