一文了解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包,使基于应用 ...
随机推荐
- 一张图牢记vim常用命令
1.示例(前提要切到命令状态) ^ 光标移动到行首 $ 光标移动到行尾 set nu 显示行号 :%s/foo/bar/g 会在全局范围(%)查找foo并替换为bar,所有出现都会被替换(g) 参 ...
- python学习之【第二篇】:Python中的数字及其所具有的方法
1.前言 Python 数字(number)数据类型用于存储数值.数据类型是不允许改变的,这就意味着如果改变数字数据类型的值,将重新分配内存空间. 2.创建数字对象 以下实例在变量赋值时 Number ...
- 数组去重(高效率,ES6才支持)
//数组去重 function distinct(arr) { let result = []; let obj = {}; for(let i of arr) { if(!obj[i]) { res ...
- 802.11ac速率集
- 004.Kubernetes二进制部署创建证书
一 创建CA证书和密钥 1.1 安装cfssl工具集 [root@k8smaster01 ~]# mkdir -p /opt/k8s/cert [root@k8smaster01 ~]# curl - ...
- transformer模型简介
Transformer模型由<Attention is All You Need>提出,有一个完整的Encoder-Decoder框架,其主要由attention(注意力)机制构成.论文地 ...
- variable precision SWAR算法
计算二进制形式中1的数量这种问题,在各种刷题网站上比较常见,以往都是选择最笨的遍历方法“蒙混”过关.在了解Redis的过程中接触到了variable precision SWAR算法(以下简称VP-S ...
- PHP RSA签名(公钥、私钥)
签名算法: Setp.1 确定待签名参数 在请求参数列表中,除去sign参数外,其他需要使用到的参数皆是要签名的参数. 在通知返回参数列表中,除去sign参数外,凡是通知返回回来的 ...
- nyoj 25-A Famous Music Composer(字符串)
25-A Famous Music Composer 内存限制:64MB 时间限制:1000ms Special Judge: No accepted:4 submit:9 题目描述: Mr. B i ...
- opencv各种小例子
图像腐蚀 #include <opencv2/highgui/highgui.hpp>//OpenCV highgui 模块头文件 ~ #include <opencv2/imgpr ...