NuGet 私有库服务搭建

1. 本文概述

NuGet 服务可以的方便管理 C# 程序依赖包,项目代码存储到 Github 平台的时候不用上传庞大的 dll 文件。企业内部使用的话,往往有些私有的包不希望扩散到外网环境中。这时可以通过 Nuget.Server 快速搭建私有 Nuget 包管理平台。

2. 私有 NuGet 服务器使用说用

2.1 搭建私有 Nuget.Server 服务

在 Visual Studio 中创建空的 ASP.NET Web 解决方案:

image

添加 Nuget.Server 引用:

image

添加密钥,用于发布和删除包:

image

发布部署网站,打开页面,如下所示部署成功!

image

2.2 Visual Studio 引用私有库

在 Visual Studio 工具→选项→NuGet包管理器 中添加私有源。私有源的名称随意填写:

image

添加完成,在Nuget管理界面可以切换到私有源中查看所有的包:

image

私有用中的包安装和卸载与 Nuget 中的方式一致。

2.3 Nuget 私有库管理

可以在微软应用商店(Microsoft Store)中下载 NuGet 包浏览器:NuGet Package Explorer

其他安装途径可以在 NuGet Package Explorer 官方网站中查看。地址如下:

地址: https://github.com/NuGetPackageExplorer/NuGetPackageExplorer

image

2.3.1 查看包

可以在 NuGet Package Explorer 右上角输入 NuGet 私有库地址,查看私有库中的包信息。也可以查看 NuGet 官方库中的包:

image

2.3.2 发布包

打开 Nuget 包浏览器,按照以下步骤创建一个新的包:

image

编辑包信息,添加 DLL 文件:

image

可以添加 Nuget 库其他引用包:(这里可以添加公有库和私有库中的引用包)

image

编辑完成后,在 File → Publish 中发布包:

image

需要输入秘钥才能发布:

image

2.3.3 更新包

对已发布的包,可以重新获取并编辑基础信息和 dll 文件,更新版本号,重新发布。可以在 NuGet Package Explorer 中查询历史版本。

image

2.3.4 删除包

NuGet Package Explorer 没有提供直接删除包的功能,这里可以使用 nuget 命令行工具进行删除。

首先,要在 Nuget 官方网站下载 Nuget.exe 可执行文件:https://www.nuget.org/downloads

image

下载的 Nuget.exe 放到D盘根目录,按以下操作流程删除包:

比如,这里要删除 EntityFramework 包:

image

命令行中执行以下删除语句:

nuget.exe delete EntityFramework 6.3.0-preview6-19304-03 -Source http://renqiancheng.com:1000/nuget

image

3. 常见问题说明

3.1 当私有库与 NuGet 公共库中的包重复时,VS 如何处理?

在最新版的 NuGet 3 中,所有的 NuGet 源没有优先级顺序,默认从速度最快的源进行下载。所以,不相同的包务必保证名称或版本号的差异。

3.2 如果在项目中保存私有库地址,方便团队成员使用?

可以在项目中添加 NuGet.Config 配置文件,记录使用到的私有库地址:

image

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <packageSources>
    <add key="nuget.org" value="https://api.nuget.org/v3/index.json" protocolVersion="3" />
    <add key="Private Nuget" value="http://privatefeed.com/nuget" />
  </packageSources>
</configuration>

安装引用的时候也可以指定具体的源:

nuget install Pack1 -Source https://api.nuget.org/v3/index.json -Source http://privatefeed.com/nuget

4. 参考文献

  1. what if I have duplicate nuget packages in multiple sources?
  2. Installing NuGet package with dependencies on multiple sources
posted @ 2022-02-22 16:54  鲜橙rqc  阅读(1067)  评论(0编辑  收藏  举报