讲师中心 微信公众号
AI工具推荐 视频效率加速

C# 私有NuGet服务器搭建方法 C#如何使用Verdaccio或BaGet

胖杰同学_2451

胖杰同学_2451

发布时间:2026-02-12 10:17:19

|

948人浏览过

|

来源于php中文网

原创

Verdaccio 搭建私有 NuGet 服务器最简路径是:安装 Node.js≥16.x,npm install -g verdaccio,verdaccio --init 生成 config.yaml 并配置 storage、auth、packages,最后 verdaccio --config config.yaml 启动,默认监听 http://localhost:4873。

c# 私有nuget服务器搭建方法 c#如何使用verdaccio或baget

用 Verdaccio 搭建私有 NuGet 服务器最简路径

Verdaccio 是轻量、开箱即用的私有包注册中心,对 .NET 开发者来说,它比 BaGet 更容易启动且默认支持 NuGet 协议(通过 verdaccio-nuget 插件或原生兼容)。但注意:Verdaccio 默认不启用 NuGet 兼容模式,必须显式配置。

实操建议:

  • 安装 Node.js(≥16.x),然后全局安装:npm install -g verdaccio
  • 初始化配置:verdaccio --init,生成 config.yaml
  • 编辑 config.yaml,确保包含以下关键项:
    storage: ./storage
    auth:
      htpasswd:
        file: ./htpasswd
    packages:
      '**':
        access: $all
        publish: $authenticated
        unpublish: $authenticated
  • 启动服务:verdaccio --config config.yaml,默认监听 http://localhost:4873
  • 在客户端机器上添加源:dotnet nuget add source http://localhost:4873 --name my-private 或用 nuget sources add -name my-private -source http://localhost:4873

常见错误:客户端执行 dotnet restore 报 Unable to load the service index for source —— 大概率是 Verdaccio 未运行,或防火墙/反向代理拦截了 /v3/index.json 路径。Verdaccio v5+ 原生响应 NuGet v3 API,无需额外插件。

BaGet 作为纯 .NET 方案的部署要点

BaGet 是 C# 编写的 NuGet 服务器,更适合已深度使用 .NET 生态的团队,但它不自带身份认证,也默认不启用符号包(.snupkg)支持,需手动开启。

实操建议:

  • 下载最新 BaGet.Web.dll(从 GitHub Releases 获取预编译版本),或用 dotnet tool install --global baget --version 2.4.0
  • 创建空目录,放入 appsettings.json,至少配置:
    {
      "BaGet": {
        "Storage": {
          "Type": "FileSystem",
          "Path": "./packages"
        },
        "Symbol": {
          "Enabled": true
        }
      }
    }
  • 启动:dotnet BaGet.Web.dll(或用 baget run 工具命令)
  • 首次推送前,需设置 API key:访问 http://localhost:5000/v3/index.json 后,在页面底部点击 “API Keys” 创建 key,并记下值
  • 推送包:dotnet nuget push MyPackage.1.0.0.nupkg -s http://localhost:5000/v3/index.json -k YOUR_API_KEY

注意:BaGet 默认监听 http://localhost:5000,若用 dotnet run 本地调试,要确认 launchSettings.json 中的 applicationUrl 是否覆盖了端口;另外,它的 /v3/index.json 返回的是标准 NuGet V3 服务索引,但不支持 search/query 端点(搜索功能需自行集成或改用 Verdaccio)。

C#
C#

"避开 C# 常见错误——空陷阱、异步陷阱、LINQ 陷阱及资源泄漏。"

下载

客户端如何正确配置 NuGet.config 绑定私有源

单靠 dotnet nuget add source 添加的源只写入用户级 NuGet.Config,CI/CD 或多开发者协作时容易遗漏。推荐直接编辑项目根目录下的 NuGet.Config 文件,确保源定义显式、可提交。

示例 NuGet.Config 内容:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <sources>
    <add key="nuget.org" value="https://api.nuget.org/v3/index.json" protocolVersion="3" />
    <add key="my-private" value="http://localhost:4873" />
  </sources>
  <config>
    <add key="http_cache" value="C:\tmp\nuget-cache" />
  </config>
</configuration>

关键点:

  • value 必须是完整 URL,不能省略协议(http:// 或 https://)
  • 若私有源启用了 Basic Auth(如 Verdaccio 配置了 htpasswd),需在 dotnet nuget add source 时加 --username 和 --password,或在 NuGet.Config 中用 <packagesourcecredentials></packagesourcecredentials> 区块明文存储(仅限开发环境)
  • 多个源共存时,NuGet 默认按顺序查找,但不会自动合并依赖解析结果;若私有源中缺失某包,会继续查下一个源 —— 这行为不可控,建议用 dotnet restore --no-cache 排查是否误命中缓存

为什么 Verdaccio 和 BaGet 都可能被 Visual Studio 识别为“不可用源”

VS 的 NuGet 包管理器 UI 对私有源的健康检查更严格:它会尝试请求 /v3/index.json 并验证响应头中的 Content-Type: application/json 和响应体结构。哪怕服务正常返回 JSON,只要字段缺失(如 resources 数组为空或格式不符),VS 就显示“源不可用”或“无包可用”。

排查步骤:

  • 用浏览器或 curl -v http://localhost:4873/v3/index.json 直接访问,确认状态码是 200,且响应体含 "resources" 和 "version" 字段
  • Verdaccio 若未加载 verdaccio-nuget 插件(旧版必需),或配置中 packages['**'] 权限未设 access: $all,会导致 /v3/index.json 返回空资源列表
  • BaGet 若未在 appsettings.json 中启用 Symbol.Enabled,某些 VS 版本(如 17.4+)会因缺少 symbol-package-base-address 资源而降级处理源
  • Windows 上若用 localhost + 非标准端口,部分 VS 版本会因 IE 安全区域策略拒绝连接 —— 可临时改用 127.0.0.1 替代 localhost

真正麻烦的不是搭建,而是让每个开发者的 VS、dotnet CLI、CI agent 用同一套凭据和 URL 解析出一致的包列表;路径、协议、权限三者稍有错位,就会出现“能 push 但 restore 不到”这类静默失败。

热门AI工具

更多
DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

小橡皮AI

一款AI工具,主要用于小橡皮一键去AI味,将机器味重的内容改得更有活人感,防止因为 AI 内容被平台打上 AI 标签,以及限流,适合需要提升相关任务效率的用户。

超级简历WonderCV

一款AI办公效率工具,主要用于免费求职简历模版下载制作,应届生职场人必备简历制作神器,适合需要提升相关任务效率的用户。

蛙蛙写作

一款AI论文写作工具,主要用于超级AI智能写作助手,适合需要提升相关任务效率的用户。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

SkildArt
SkildArt Hot

SkildArt是一款AI文本写作工具,一站式 AI 视觉创作平台。

Loomy
Loomy Hot

一款AI工具,主要用于科大讯飞发布的桌面级 AI 助理,比 OpenClaw 更易用、更安全!,适合需要提升相关任务效率的用户。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

Laper
Laper Hot

Laper是专为编剧、导演和制片人推出的 AI 原生剧本创作工具。

相关专题

更多
json数据格式
json数据格式

JSON是一种轻量级的数据交换格式。本专题为大家带来json数据格式相关文章,帮助大家解决问题。

2275

2023.08.07

json是什么
json是什么

JSON是一种轻量级的数据交换格式,具有简洁、易读、跨平台和语言的特点,JSON数据是通过键值对的方式进行组织,其中键是字符串,值可以是字符串、数值、布尔值、数组、对象或者null,在Web开发、数据交换和配置文件等方面得到广泛应用。本专题为大家提供json相关的文章、下载、课程内容,供大家免费下载体验。

3702

2023.08.23

jquery怎么操作json
jquery怎么操作json

操作的方法有:1、“$.parseJSON(jsonString)”2、“$.getJSON(url, data, success)”;3、“$.each(obj, callback)”;4、“$.ajax()”。更多jquery怎么操作json的详细内容,可以访问本专题下面的文章。

1236

2023.10.13

go语言处理json数据方法
go语言处理json数据方法

本专题整合了go语言中处理json数据方法,阅读专题下面的文章了解更多详细内容。

4299

2025.09.10

curl_exec
curl_exec

curl_exec函数是PHP cURL函数列表中的一种,它的功能是执行一个cURL会话。给大家总结了一下php curl_exec函数的一些用法实例,这个函数应该在初始化一个cURL会话并且全部的选项都被设置后被调用。他的返回值成功时返回TRUE, 或者在失败时返回FALSE。

3863

2023.06.14

linux常见下载安装工具
linux常见下载安装工具

linux常见下载安装工具有APT、YUM、DNF、Snapcraft、Flatpak、AppImage、Wget、Curl等。想了解更多linux常见下载安装工具相关内容,可以阅读本专题下面的文章。

915

2023.10.30

js正则表达式
js正则表达式

php中文网为大家提供各种js正则表达式语法大全以及各种js正则表达式使用的方法,还有更多js正则表达式的相关文章、相关下载、相关课程,供大家免费下载体验。

4856

2023.06.20

js获取当前时间
js获取当前时间

JS全称JavaScript,是一种具有函数优先的轻量级,解释型或即时编译型的编程语言;它是一种属于网络的高级脚本语言,主要用于Web,常用来为网页添加各式各样的动态功能。js怎么获取当前时间呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

1435

2023.07.28

Postman身份认证怎么配置
Postman身份认证怎么配置

本专题从实际API接口调试场景出发,讲解Postman身份认证的完整配置流程,包括常见认证协议介绍、授权参数设置、访问令牌填写、OAuth 2.0授权及认证失败排查,帮助用户正确完成接口授权与访问验证。

0

2026.11.06

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
C++ Core Guidelines
C++ Core Guidelines

共0课时 | 0人学习

C++ Reference
C++ Reference

共0课时 | 0人学习

C++ 官方标准说明
C++ 官方标准说明

共0课时 | 0人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn