一文了解Nuget的使用
Nuget介绍
官网定义:NuGet是.NET的软件包管理器(免费)。NuGet客户端工具提供了生成和使用软件包的能力。NuGet Gallery 是所有软件包作者和消费者都使用的中央软件包存储库。
简单来说,nuget包解决了dll引用的问题,开发者可以通过打包,然后发布到公有主机或者私有主机上,供其他开发者使用。可以大大的提高创建一个.NET应用的效率。
想了解平时安装的nuget包,是如何产生的。需要了解几个角色。
创建者:包的作者,创建一个项目,最终生成一个后缀名为.nupkg的文件,里面包含了编译代码DLL、与该代码相关的其他文件以及描述清单如版本等信息。
Host 主机:nuget.org 作为公共主机,如果你也想发布一个包,供所有开发者使用的话,可以选择它。NuGet 自身负责在 nuget.org 中维护包含 100,000 多个唯一包的中央存储库。这些包每天供数以百万的 .NET/.Net Core 开发人员使用。私有主机上,比如团队内部几个人可以访问。
消费者:很好理解,就是我们从nuget获取包的开发者。
简单的总结下这几个角色的关系:创建者创建一个nuget包,并发布到主机上。然后使用者在可访问的主机上搜索安装nuget包到项目中,这样项目就可以利用包提供的功能。如图

工具的选择
目前提供的工具还是挺丰富的,下文使用dotnet CLI ,你也可以选择任意你习惯的工具

打包
准备工作,创建一个类库并命名为AA.Nlog。
1.配置包元数据 ,右键项目-》属性

在.csproj文件中,我们发现添加了一下属性:
<PropertyGroup>
<TargetFrameworks>net452;netstandard2.</TargetFrameworks>
<Description>支持 NLog</Description>
<PackageProjectUrl>https://github.com/ChengLab/AAFrameWork</PackageProjectUrl>
<RepositoryType>git</RepositoryType>
<PackageTags>NLog</PackageTags>
<RepositoryUrl>https://github.com/ChengLab/AAFrameWork</RepositoryUrl>
<GeneratePackageOnBuild>false</GeneratePackageOnBuild>
</PropertyGroup>
如果勾选了在版本中生成Nuget包选项框,则生成项目时会自动生成nuget包;包ID:是唯一的标识,用户搜索和使用就是通过包ID。包版本:会自动根据程序集版本生成,如果要更新包,只需要把版本号改大点即可。其他信息可以自行填写。
2.从项目中 生成nuget包(.nupkg文件),运行pack命令如下:
dotnet pack

nuget包已经生成了,什么是nupkg文件?.nuspec文件是包含程序包元数据的XML清单。此清单可用于构建包装并向消费者提供信息。清单始终包含在包装中。可以在微软文档中(https://docs.microsoft.com/en-us/nuget/reference/nuspec)找到有关nuspec的更多详细信息
发布包到公共Host
创建 API 密钥
登录你的 nuget.org 帐户,或创建一个帐户(如果你还没有帐户)。有关创建帐户的详细信息,请参阅个人帐户。
选择用户名(在右上角),然后选择“API 密钥”。
选择“创建” ,提供密钥名称,选择“选择范围”>“推送” 。输入“Glob 模式” *,然后选择“创建” 。
创建密钥后,选择“复制”,检索需要在 CLI 中使用的访问密钥 :

使用dotnet CLI 发布nuget包
运行命令,指定包名称(唯一包 ID)并使用你的 API 密钥替换密钥值:
dotnet nuget push AA.NLog.1.0..nupkg -k qz2jga8pl3dvn2akksyquwcs9ygggg4exypy3bhxy6w6x6 -s https://api.nuget.org/v3/index.json
发布过程结果
info : 正在将 AA.NLog.1.0..nupkg 推送到 'https://www.nuget.org/api/v2/package'...
info : PUT https://www.nuget.org/api/v2/package/
warn : All published packages should have license information specified. Learn more: https://aka.ms/deprecateLicenseUrl.
info : Created https://www.nuget.org/api/v2/package/ 2854 毫秒
info : 已推送包。
这里 -k 代表API密钥, -s 代表源。在我们的例子中,源是nuget.org
我们登录到nuget.org查看我们的软件包:

可以进行管理,发布之后,稍等几分钟会在nuget.org中进行搜索到
在vs中浏览我们的nuget软件包
管理nuget程序包->搜索我们刚发布的软件包,AA.Nlog。

如上图所示,该软件包已经可以使用。
希望这篇文章可以对你有所帮助!
参考:https://docs.microsoft.com/zh-cn/nuget/what-is-nuget
一文了解Nuget的使用的更多相关文章
- asp.net core 六 Oracle ORM
.netcore 中 Oracle ORM 在真正将项目移植到.netcore下,才发现会有很多问题,例如访问Oracle,问题出现的时间在2017年底 参考连接 ...
- Jenkins持续集成学习-搭建jenkins问题汇总
目录 Jenkins持续集成学习5-搭建jenkins问题汇总 目录 前言 问题列表 nuget还原包问题 编译问题 SVN更新问题 参考文档 Jenkins持续集成学习5-搭建jenkins问题汇总 ...
- .Net Core 全球化&本地化的使用
官网文档 nuget地址 创建资源文件 添加资源文件 实施策略 配置本地化 本地化中间件 使用 视图本地化 DataAnnotations 本地化 Make the app's content loc ...
- SQLite EF Core Database Provider
原文链接 This database provider allows Entity Framework Core to be used with SQLite. The provider is mai ...
- 为.netcore助力--WebApiClient正式发布core版本
1 前言 WebApiClient已成熟稳定,发布了WebApiClient.JIT和WebApiClient.AOT两个nuget包,累计近10w次下载.我对它的高可扩展性设计相当满意和自豪,但We ...
- 使用 NuGet 下载最新的 Rafy 框架及文档
为了让开发者更方便地使用 Rafy 领域实体框架,本月,我们已经把最新版本的 Rafy 框架程序集发布到了 nuget.org 上,同时,还把 RafySDK 的最新版本发布到了 VisualStud ...
- 容器环境下如何将NuGet包XML文档添加到Swagger
容器环境下将NuGet包XML文档添加到Swagger 在.NET Core项目开发过程中,为了实现代码复用,我们将可以重复使用的部分拆分成一个个小的NuGet包.这些NuGet包可以在其他系统中复用 ...
- ABP文档 - EntityFramework 集成
文档目录 本节内容: Nuget 包 DbContext 仓储 默认仓储 自定义仓储 特定的仓储基类 自定义仓储示例 仓储最佳实践 ABP可使用任何ORM框架,它已经内置了EntityFrame(以下 ...
- ABP文档 - SignalR 集成
文档目录 本节内容: 简介 安装 服务端 客户端 连接确立 内置功能 通知 在线客户端 帕斯卡 vs 骆峰式 你的SignalR代码 简介 使用Abp.Web.SignalR nuget包,使基于应用 ...
随机推荐
- LNMP下zabbix_server安装部署一
server:192.168.112.6 agent:192.168.112.7 安装nginx编译依赖包 gcc.pcre-devel.zlib-devel 如果需要https则加上openssl- ...
- [考试反思]阶段性总结:NOIP模拟测试7~13
苟且Rank#1.第二次分机房结束. 得到了喘息一会的权利. 在最后两场考试中大脸skyh慷慨舍弃264分让出Rank#1的故事也十分感人 然而还是有很多东西值得思考. 虽说是反思,但是还是有一些地方 ...
- EffectiveJava-2
一.使用类库 使用类库的好处: 无须关心方法是如何实现的,由算法专家花了大量时间设计.实现和测试这个方法,不仅保证了正确性,而且一旦有缺陷,下一个版本就会修复. 不必浪费时间为哪些与工作不太相关的问题 ...
- vue proxyTable代理 解决开发环境的跨域问题
如果我们项目请求的地址为 htttp://xxxx.com/a/b/c 可以设置代理为: dev:{ assetsSubDirectory: 'static',// 静态资源文件夹 assetsPub ...
- mysql connect refuse解决方法
mysql connect refuse解决方法 1 因为连接数太多my.cnf配置文件 下面2个改大一点就好了 <pre>max_user_connectionmax_connectio ...
- zabbix 4.2 的安装和设置(mysql57----centos7)
一.安装RPM [root@localhost ~]# rpm -ivh https://repo.zabbix.com/zabbix/4.2/rhel/7/x86_64/zabbix-release ...
- Tomcat开启关闭常见问题
启动 bin/startup.bat ,双击运行该文件即可 访问:浏览器输入: http://localhost:8080 回车访问自己 http://别人的ip:8080 访问别人 可能出现的问题: ...
- deepin MySQL 安装以及编码格式的修改utf-8
deepin MySQL 安装以及编码格式的修改utf-8: 1.sudo apt-get install mysql-server mysql-client 2.sudo mysql -u root ...
- nyoj 975-关于521 (EOF)
975-关于521 内存限制:64MB 时间限制:1000ms 特判: No 通过数:5 提交数:46 难度:2 题目描述: Acm队的流年对数学的研究不是很透彻,但是固执的他还是想一头扎进去. 浏览 ...
- 关键路径法(Critical Path Method, CPM)
1.活动节点描述及计算公式 通过分析项目过程中哪个活动序列进度安排的总时差最少来预测项目工期的网络分析. 产生目的:为了解决,在庞大而复杂的项目中,如何合理而有效地组织人力.物力和财力,使之在有限资源 ...
