当前位置:   article > 正文

手把手教你搭建使用NuGet私有源_自己搭建nuget

自己搭建nuget

前言

相信写过.net的小伙伴应该都用过NuGet来安装使用第三方或者官方的代码(程序集),就算你没用过,那相信你也见过。废话不多说,直接进入主题,抛出灵魂三问(who,why,how),本文主要介绍怎么搭建私有源。

Who|什么是NuGet

截取部分官方解释:

适用于任何现代开发平台的基本工具可充当一种机制,通过这种机制,开发人员可以创建、共享和使用有用的代码。 通常,此类代码捆绑到“包”中,其中包含编译的代码(如 DLL)以及在使用这些包的项目中所需的其他内容。

对于 .NET(包括 .NET Core),共享代码的 Microsoft 支持的机制则为 NuGet ,其定义如何创建、托管和使用面向 .NET 的包,并针对每个角色提供适用工具

简单理解它其实就是一个微软开发的包管理工具,就好比如JAVA中的Maven,Node中的NPM,Python中的PIP等等,其实目前大部分主流的编程语言都有自己的包管理工具。

Why|为什么用NuGet

首先它是个管理工具,那它就具备有安装、卸载、升级降级的功能。其次可以打包分享共享自己的代码供别人使用。最后总结,说白了,就是为了复用代码,避免重复造轮子。


那有小伙伴就会说了

”我可以直接把想复用的公共代码,编译好的程序集放在某个文件夹中,直接引用不也可以吗?“

这样子做也是没问题,虽说简单粗暴,但也存在两个比较严重的弊端:

  1. 难共享,你想想把程序集都放在自己的本地文件夹了,其他人想用你的程序集,岂不是还要去拷贝一次
  2. 难管理,且不说程序集的备注说明不直观,升降级就是个大问题了,想要升级的时候,你还得删除引用,重新引用新的

How|怎么使用NuGet

这里我主要会演示三大部分,分别是搭建Nuget私有源,打包Nuget包,将Nuget包发布自己的私有源。

环境准备

名称版本
Visual Studio201916.11.18
dotnet CLI6.0.202
IIS10

搭建Nuget私有源

1、新建一个解决方案

在这里插入图片描述
2、直接选空模板然后点创建
在这里插入图片描述
3、右击项目找到=》管理Nuget程序包=》搜索安装NuGet.Server
在这里插入图片描述

等待安装完毕,这时候会多出来几个文件,还有web.config多出一些配置,主要配置信息都在appSettings节点里面。

  • requireApiKey:确定从服务器推送/删除包是否需要Api密钥。默认为true
  • apiKey:密钥
  • packagesPath:更改到packages文件夹的路径。默认值为~/Packages。这可以是虚拟或物理路径。

还有其他配置,有需要可以自行再翻译搜索一下用途

4、因为这边我是用windowns环境在运行,所以项目部署IIS跑起来试试看
在这里插入图片描述

打包Nuget包

1、简单创建一个.NET Standard的类库项目
在这里插入图片描述
2、右击项目=》属性,找到打包这栏,可以看到里面有很多包的元素
在这里插入图片描述
关于包的最佳做法,建议大家可以参照官方的指南,或者找个比较知名的nuget包,看看人家怎么写的。
3、然后就可以右击项目打包或者使用dotnet pack命令打包
在这里插入图片描述

发布到私有源

这里我使用的是dotnet 命令来发布nuget包,当然还有其他方式,比如使用nuget CLI命令。
关于dotnet涉及nuget的命令,使用dotnet nuget --help查看相关语句用法
在这里插入图片描述
在展开看看发布的用法dotnet nuget push --help

Options:
-h|–help Show help information
–force-english-output 使用不变的基于英语的区域性强制应用程序运行。
-s|–source 要使用的包源(URL、UNC/文件夹路径或包源名称)。如果在 NuGet.Config 中指定,则默认为 DefaultPushSource。
-ss|–symbol-source 要使用的符号服务器 URL。
-t|–timeout 推送到服务器的超时值(以秒为单位)。默认为 300 秒(5 分钟)。
-k|–api-key 服务器的 API 密钥。
-sk|–symbol-api-key 符号服务器的 API 密钥。
-d|–disable-buffering 推送到 HTTP(S) 服务器时禁用缓存可减少内存使用。
-n|–no-symbols 如果存在符号包,系统不会将该符号包推送到符号服务器。
–no-service-endpoint 请勿将 “api/v2/package” 追加到源 URL。
–interactive 对于身份验证等操作,允许命令阻止并要求手动操作。
–skip-duplicate 如果包和版本已存在,则跳过它并继续推送中的下一个包(若有)。

不开启密钥验证

1、首先要将我们的nuget服务器站点的web.config的requireApiKey节点更改成false,这步很关键,如果没有修改成false,且你又不带密钥发布,那会提示

error: Response status code does not indicate success: 403 (Forbidden).

2、打开cmd或者power shell 输入dotnet命令
这里我使用powershell

PS C:\Users\Administrator> dotnet nuget push D:\个人项目\MyNugetServer\MyNugetServer\TestClassLibrary\bin\Debug\TestClassLibrary.1.0.0.nupkg -s http://localhost:7788/nuget
  • 1

在这里插入图片描述

开启密钥验证

1、重新修改nuget服务器站点的web.config配置,将以下节点调整,然后保存

<add key="requireApiKey" value="true" />
<add key="apiKey" value="pwd@123456" />
  • 1
  • 2

2、打开cmd或者powershell 输入dotnet命令
这里我使用powershell

PS C:\Users\Administrator> dotnet nuget push D:\个人项目\MyNugetServer\MyNugetServer\TestClassLibrary\bin\Debug\TestClassLibrary.1.0.0.nupkg -k pwd@123456 -s http://localhost:7788/nuget  
  • 1

在这里插入图片描述
最后看看是不是nuget包是否成功上传到nuget服务器站点。
以我这边演示的例子来说,我nuget服务器部署的目录在D:\个人项目\publish\MyNugetServer ,然后找到打开里面的Packages文件夹。
在这里插入图片描述

测试

1、打开VS=》工具=》选项=》NuGet包管理器=》程序包源,新增一个自己的包源,然后确认保存。
在这里插入图片描述
2、随意打开一个项目,切换到自己的程序包源,然后看看是否存在刚刚上传的包
在这里插入图片描述

总结

简单使用操作就到此一游,更多高级玩法直接上官方文档看教程,还是那句话,官网永远是最好的老师。
886

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号