NuGet的简单使用
什么是NuGet?
NuGet(读作New Get)是用于微软.NET开发平台的软件包管理器,是一个Visual Studio的扩展。在使用Visual Studio开发基于.NET Framework的应用时,NuGet能够令你在项目中添加、移除和更新引用的工作变得更加快捷方便。
通过NuGet你可以很容易的访问到其他开发者发布的软件包,你也可以创建、分享或者发布自己的包到NuGet。微软的EntityFramework、ASP.NET MVC等或者一些常用到的第三方软件包:Json.NET、NUnit等都托管到NuGet上。
为什么要用NuGet?
上面说道NuGet实际上就是一个软件包的托管平台。用过VS的人可能都知道一个叫做VisualStudioGallery的网站,通过这个网站你可以下载使用一些VS的扩展工具、项目模板或者一些常用的软件包,VS中也提供了一个叫做“扩展和更新”的工具能够让你轻松的访问到VisualStudioGallery中的内容。
那么NuGet和VisualStudioGallery有什么区别?我们为什么要用NuGet?
NuGet和VisualStudioGallery的区别
首先NuGet是VS的一个扩展,而VisualStudioGallery是VS扩展的一个托管平台,所以NuGet是包含在VisualStudioGallery内的,其次NuGet和VisualStudioGallery的关注点不同,VisualStudioGallery主要是服务于VS为VS提供插件托管服务的平台,
而NuGet是.NET软件包的管理平台,是为我们项目中使用的软件包提供托管服务的。在项目开发中难免会引用一些其他人开发的类库,NuGet就是为了方便我们引用各种类库而存在的。为什么要用NuGet?
一个大的项目不可能所有的功能都要自己去实现,有句话说的好:“不要轻易造轮子”,最简单直接的办法就是使用别人造好的“轮子”。通常引用一个类库到我们的项目中要先下载或找到类库,然后复制到项目目录,最后添加引用。
如果我们引用的类库有更新的版本并且我们想使用的话又要重新添加引用,一两个倒还好,如果引用数量较多的话重复添加引用是比较麻烦和枯燥的,并且要卸载引用的时候还是要经过几个步骤。
这也就是为什么推荐使用NuGet的原因,NuGet能够让我们轻松的实现对软件包的引用、更新和卸载。
NuGet怎么使用?
前面已经说了什么是NuGet以及我们为什么要用NuGet,接下来我就通过一个简单的控制台程序来说说怎么用NuGet。
1.安装NuGet
你可以从VS的扩展和更新中安装NuGet。
或者从NuGet官方下载安装包。
2.使用NuGet可视化管理器
通过可视化的NuGet管理器你可以浏览当前项目已经安装的包或者浏览、搜索其他的包。
我们选中Newtonsoft.Json,在右侧就会出现Newtonsoft.Json的详细信息,选中要将Newtonsoft.Json下载到的项目,然后点击安装。NuGet会在解决方案目录下创建packages目录并将包下载到该目录
下载完成后VS会自动将Newtonsoft.Json添加到我们的引用。通过这个管理器你可以方便的对你引用的包进行可视化管理。
3.使用NuGet控制台管理器
除了可视化的管理器外NuGet也为我们提供了一个控制台应用,通常我更喜欢使用控制台管理器,因为使用简单的命令我就能对包进行管理。
打开NuGet控制台管理器。通过
Install-Package “包名”
这个命令我们就能完成对Newtonsoft.Json这个包的引用。除此之外还可以通过
get-help NuGet
来获取其他命令的信息。Get-Package
:获取当前已经安装的包UnInstall-Package
:卸载某个包Update-Package
:升级某个包
等常用命令,更多命令以及NuGet的详细内容可以查看NuGet官方文档
总结
NuGet的存在使得我们不需要过多的去考虑引用软件包方面的各种问题,我们只需要记住几个简单的命令就能轻松的实现对软件包引用。但它的作用不仅于此,你还可以创建自己的软件包并发布到NuGet上
供他人使用,你也可以搭建自己的服务器来托管你的软件包,这个对于大公司来说很实用,可以将内部开发的软件包统一托管起来,并且方便使用。后面我会继续深入的分析NuGet的使用。
NuGet的简单使用的更多相关文章
- Nuget调用简单封装.
1. 项目引用Dapper作为直接访问, 为了使用方便, 封装一下.达到效果: - 数据库连接配置在webconfig.xml中. - 常用调用方法封装. 调用: //可以采用单例模式. //全局实 ...
- Net包管理NuGet(3)搭建私服及引用私服的包
1,打开vs创建项目(ASP.NET WEB空项目)假设命名为MyNuGet 空项目解决方案如图 2,右键引用>管理NuGet程序包>切到浏览搜索NuGet.Server然后安装(3.1. ...
- Nuget快捷实践
Nuget快捷实践 简介 本文主要包含三个部分,即创建nuget包.上传nuget包和删除nuget包.旨在引导快速使用nuget打包和使用,并实现对于nuget的简单管理. 本文使用的nuget服务 ...
- 记一次结巴分词.net core 2.0版 nuget发布过程
最近用到分词考虑很久,选用了结巴分词,原因见博客Lucene.net(4.8.0) 学习问题记录五: JIEba分词和Lucene的结合,以及对分词器的思考 既然选好了,难就开始行动吧 . 查了.ne ...
- Docker - 使用 Nexus3 搭设私有 NuGet 仓库
目录 前言 NuGet Nexus 私有仓库 说明 安装 Nexus 拉取 Nexus 镜像 运行 Nexus Nexus NuGet 仓库简单使用 Nexus 默认帐号 Repositories 上 ...
- NHibernate系列文章二:创建NHibernate工程
摘要 这篇文章介绍了如何创建一个简单的使用NHibernate的控制台应用程序,包括使用NuGet.简单的配置.单表映射.对NHibernate配置文件添加智能提示.使用ISessionFactory ...
- CQRS学习——集成ASP.NET Identity[其五]
[其实和Cqrs没啥关系] 缘由 其实没啥原因,只是觉得以前写了不知多少遍的用户登录复用性太差,实现的功能也不多. 依赖的Nuget包 简单登陆 就简单登陆而言,只需要实现如下接口/抽象类: Stor ...
- 使用RpcLite构建SOA/Web服务(Full .Net Framework)
使用RpcLite构建SOA/Web服务(Full .Net Framework) SOA框架系列 1. 使用RpcLite构建SOA/Web服务 2. 使用RpcLite构建SOA/Web服务(Fu ...
- 一键安装各个版本boost库(无需编译)
1.NuGet 最简单的,用VS自带的NuGet包管理器安装,一般比较常用的上面都有 2.下载exe安装包 在这里https://sourceforge.net/projects/boost/file ...
随机推荐
- Linux内核原理与分析-第一周作业
本科期间,学校开设过linux相关的课程,当时的学习方式主要以课堂听授为主.虽然老师也提供了相关的学习教材跟参考材料,但是整体学下来感觉收获并不是太大,现在回想起来,主要还是由于自己课下没有及时动手实 ...
- 使用控制台对Redis执行增删改查命令
使用控制台对Redis执行增删改查命令 在上一篇里,我们已经安装了redis.这一篇我们将一起来学习如何使用"控制台"管理Redis 首先肯定是打开一个控制台,在windows系统 ...
- C语言编译器CL.exe
下载地址CL.7z版权问题:仅供学习交流,请于24小时内删除,本人不承担版权问题… 基本使用: 1.解压缩,例如解压缩到E盘根目录下 2.打开cmd命令行界面(快捷方式win+R输入cmd回车)cd命 ...
- 基于jQuery实现点击列表加载更多效果
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> < ...
- Flex核心属性整理
main axis和cross axis的位置不一定是水平和垂直的,以flex-direction的值即为主轴方向 justify-content:主轴对齐方式 space-between:将多余空间 ...
- MyBatis入门(二)接口式编程
在 MyBatis入门(一) 的基础之上编写接口 将接口和Mapper文件进行绑定,会为接口创建一个代理对象,代理对象去执行增删改查 (1)编写接口 public interface EmpDao ...
- 关于ajaxFileUpload图片上传,success和error都触发的情况
最近做到项目使用JQuery的插件ajaxFileUpload~~~ 遇到了非常领人匪夷所思的事情,当图片上传成功之后呢(success),它的error事件也被触发了,情况就是: 后端数据正确返回 ...
- 最大子矩阵和问题dp
给定一个矩阵 matrix,其中矩阵中的元素可以包含正数.负数.和0,返回子矩阵的最大累加和.例如,矩阵 matrix 为: 0 -2 -7 0 9 2 -6 2 -4 1 -4 1 -1 8 0 - ...
- 06_ for 练习 _ 年利率
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title&g ...
- ECMA Script 6_必须要知道的基础
ES6 为了保持兼容性,var 命令和 function 命令声明的全局变量,依旧是顶层对象的属性: 另一方面规定,let 命令.const 命令.class 命令声明的全局变量,不属于 window ...