NuGet 是什么? 理解与使用
NuGet 是什么? 理解与使用
NuGet 是一个自由开源软件包管理系统,用于Microsoft开发平台,以前称NuPack。
NuGet 作为 Visual Studio 扩展,能够简化在 Visual Studio 项目中添加、更新和删除库(部署为程序包)的操作。NuGet 包是打包成单个ZIP文件,文件扩展名是 .nupkg,使用开放打包约定(OPC)格式,包好编译代码(Dll)、与该代码相关的其他文件以及描述性清单(包含包版本号等信息)。从 Visual Studio 2012开始,缺省预安装了 NuGet 。
【定义】
NuGet 是一个包(package)管理平台,确切地说,是.net 平台的包管理工具,它提供了一系列客户端用于生成、上传和使用包,以及一个用于存储所有包的中心库即NuGet Gallery,如果有需要也可以搭建自己的私有 NuGet 库。
NuGet 的实现均为开源项目,包括了客户端工具、服务器、官方网站,以及各语言的文档等。这些项目可以在下面的链接中找到:https://github.com/NuGet
【应用】
从一件事情的发展顺序来说,NuGet 是用来管理项目库(下面统称为程序包)的,那么首先,程序包应该放到哪里呢?
1.程序包放哪里?
默认的,它们位于 nuget.org 的官方 NuGet 程序包库中。此库公开了一个 OData 源:
packages.nuget.org/v1/FeedService.svc
一般在 NuGet 官网注册一个账号,验证后可获得一个 API Key,它就是以后用来发布程序包的 APIKey。还有一种情况,自己搭建 NuGet 服务器,发布后,在VS中添加本地站点到包数据源,自己全权管理自己的程序包,不借助于第三方平台。(推荐一篇博客,图文并茂讲解如何搭建自己的NuGet 服务器:https://kb.cnblogs.com/page/143192/)
2.程序包从哪里来?
一部分是微软和其他用户提供的,但是显然,尤其是在一个企业中,都有自己的一套标准规范和类库,更具有个性化的特点,这个时候,这个程序包就是从企业内部自己生成出来的。下面简单说一下程序包的创建和发布过程:
- 创建一个类库项目
- 从项目生成 NuSpec 清单(nuget spec)
- 更新项目的程序集元数据(此信息通常位于名为 AssemblyInfo.cs 的文件中)
- 使用 NuGet .exe 创建程序包(nuget pack ProjectName.csproj)
3.发布程序包
根据自己的密钥,将自己的程序包发布到库上:
- 使用命令将其存储在安全的位置
- 存储密钥后,使用 push 命令将程序包发布到库
有一点需要注意,如果后期类库更改了,只需要再次创建程序包 pack,再次发布 push 就可以了(注意版本号的更改)。
4.使用程序包
在自己的程序中安装和更新程序包即可。具体可以参考一下:https://msdn.microsoft.com/zh-cn/magazine/hh547106.aspx
NuGet 是什么? 理解与使用相关推荐
- 关于 项目中Ioc基础模块 的搭建 (已适用于.net core / .net Framework / Nancy)
Ioc (Inversion of Control, 控制反转)把创建对象的操作交给框架,亦被称为 DI(Dependency Injection, 依赖注入). 为什么叫做 "控制反转&q ...
- NuGet是什么?理解与使用
如果你了解python,那么它类似pip. 如果你了解nodejs,那么它类似npm. 如果你了解ruby,那么它类似gem. 对,它就是一个包(package)管理平台,确切的说是 .net平台的包 ...
- NuGet是什么?理解与使用(下)
本篇将回答下面几个问题: 如何解读NuGet Gallery上的包信息? 如何上传NuGet包到NuGet Gallery? 如何安装本地NuGet包? NuGet包的内容文件与目录结构? 如果你没看 ...
- NuGet是什么?理解与使用(上)
如果你了解python,那么它类似pip. 如果你了解nodejs,那么它类似npm. 如果你了解ruby,那么它类似gem. 对,它就是一个包(package)管理平台,确切的说是 .net平台的包 ...
- 项目文件中的已知 NuGet 属性(使用这些属性,创建 NuGet 包就可以不需要 nuspec 文件啦)...
知道了 csproj 文件中的一些常用 NuGet 属性,创建 NuGet 包时就可以充分发挥新 Sdk 自动生成 NuGet 包的优势,不需要 nuspec 文件啦.(毕竟 nuspec 文件没有 ...
- IM开发基础知识补课(五):通俗易懂,正确理解并用好MQ消息队列
1.引言 消息是互联网信息的一种表现形式,是人利用计算机进行信息传递的有效载体,比如即时通讯网坛友最熟悉的即时通讯消息就是其具体的表现形式之一. 消息从发送者到接收者的典型传递方式有两种: 1)一种我 ...
- DotnetSpider (一) 架构的理解、应用、搭建
本文连接:http://www.cnblogs.com/grom/p/8931650.html 受业务影响,决定将Downloader单独分层,做出修改. 最近在做爬虫,之前一直在使用 HttpWeb ...
- 【EntityFramework 6.1.3】个人理解与问题记录
前言 又是一个炎热夏日的晚上,开着空调听着音乐又开始了我们今天的博文.此文并不是ROM工具哪家强之类的引战贴,只是本文自己的一点看法和见解,望前辈看官有望斧正 声明 本文欢迎转载,原文地址:http: ...
- 一篇万字长文读懂微软PDB、SourceLink——.net core之nuget 包调试
序言 在大前年,为了说服框架组采用Nuget包的形式分发框架类库,我费了老鼻子的劲也没有取得成功,其中最致命的一个问题是,nuget包不能获得源码调试级的支持,在分发和包的管理形式上其比其他方案都优秀 ...
最新文章
- 硅谷产品实战-总结:19、增长黑客的核心公式
- 成绩查看_托福网考免费寄送成绩单,掌握这些知识能帮你省不少钱!
- SQL update select语句
- git pull 默认拉取远端其他分支 问题解决
- IIS写权限漏洞 (HTTP PUT方法利用)
- MatConvnet工具箱文档翻译理解(1)
- [BUUCTF-pwn]——jarvisoj_level2_x64
- netbeans连接数据库_NetBeans Java EE技巧3:数据库中的RESTful Web服务
- cocos2d-x 观察者模式
- docker build -t_利用Dockerfile自定义镜像-图解轻松学Dockeramp;K8S
- 小项目,吃货联盟,java初级小项目,源代码
- 集体智慧编程 简介
- 爬虫使用分享:风云2号卫星气象照片
- 实用EXCEL之考勤数据的表合并
- linux每日命令(3):ln命令
- DataGrip使用技巧
- 什么是框架,框架和设计模式的关系,为什么要用框架?(转)
- python爬虫+抖音分享链接=可直接下载视频链接
- 软件开发专业需要学习多少年
- 收好了!来自摩根大通的算法交易机器学习指南