问题的由来

   最近部门,在开发的时候遇到一个问题,现在有项目A B C三个项目,项目B和C分别提供了组件库由项目A直接引用。那么每次开打项目A获取最新后,同时还得打开项目B C获取最新然后编译一次。抛开设计方面的问题,假如以后还多了项目E F G,引用和被引用,那么打开一个项目想编译一次,还得同时打开N个项目。当时把问题反馈后,有人建议使用NuGet。

NuGet简介

    NuGet可以方便快捷添加 移除 更新 第三方类库,常用的类库,例如log4net,Json.net等都可以直接通过NuGet下载,如果自己编写了些认为有用并且希望和大家分享的工具库,也可以通过注册账号后,上传上去。当然!如果不希望分享出去,特别公司内部使用的,我们可以搭建属于自己的NuGet服务进行管理。

初识NuGet

  在visual studio 2010 sp1和 2012后版本都已经自带NuGet,如果没有,也可以在【工具】-【拓展和更新】里下载,下载完后重启visual studio就有了。

  打开【工具】-【管理解决方案的NuGet程序包】,搜索【Json.net】,点击安装。当然,用熟练后你也可以打开【工具】-【程序包管理器控制台】,通过命令【Install-Package Newtonsoft.json】进行安装

 

  如果程序包不想用了,也可以通过上面的界面进行卸载,或者通过命令【UnInstall-Package Newtonsoft.json】进行卸载。

NuGet.Server 的搭建

  上面已经提过,公司内部使用的时候,不希望将程序分享出去,只想内部共享和管理。那么你可以通过使用NuGet.Server进行搭建一个属于你的NuGet服务。

  创建一个新的Web项目【MyNuGetServer】(名字自己起),选择模板【Empty】,框架【Web Forms】,确定

  

  

  打开【工具】-【管理解决方案的NuGet程序包】,搜索【NuGet.Server】,点击安装。通过命令【Install-Package NuGet.Server】进行安装

  

  安装完了后,打开【Web.config】,发现自动添加了很多东西,先找到<add key="apiKey" value="123456789"/>,其他可以暂时不理,【apikey】将会在上传包的时候使用到,自己随意填一个。假如需要发布到nuget.org也就是公开的,那么你注册了个后NuGet的帐号后,微软将会给一个guid的key给你,发布到nuget.org的时候将会用到。

  填写完apikey后,Ctrl+F5运行一下。出现下面的页面证明你搭建成功了。没错!搭建成功了,就是怎么简单。

  随便找一个后缀名为nupkg的,放到项目的【Packages】文件夹里,发布然后部署到IIS,具体部署到IIS的流程,我就不多说了。注意两点,文件夹的权限和【应用程序池】选择4.0集成

  完成上面的步骤后,打开你的站点/nuget/Packages这个路径,出现以下页面就证明你部署成功了。如果打开的页面有点出入,可以选择用IE浏览器查看。而页面里面显示CalculationFormula,就是我添加上去的程序包。

  这个时候,打开【工具】-【管理解决方案的NuGet程序包】-【设置】出现下面的界面,添加你部署好的nuget.server站点,注意,得加上/nuget这个路径

点击确定后,返回到【管理解决方案的NuGet程序包】界面,就会发现你上传的程序包,可以显示出来让你安装了。

  整个搭建完成了,可以看到,nuget.server是不需要数据库的,只要把程序包放在Packages文件夹就完事了,想对文件操作也很方便,但是我们也不会经常跑去服务器去对程序包进行更新删除,这样太low了。

  在/nuget/Packages这个页面看到,我们是无法操作程序包的,包括添加删除更新。nuget约定是不允许删除程序包的,有问题的NuGet让你更新版本修复,当然你也可以自己创建一个操作页面,对/nuget/Packages里的文件进行操作删除。

  那么上传和更新呢?用命令nuget pack和nuget push,当然了,初学的用图形化【NuGet Package Explorer】处理会更加方便

NuGet Package Explorer的使用

  打开【NuGet Package Explorer】点击【Create a new package】这个选项,拖一个dll到界面的右边

  

  ID:输入名称,也是包的唯一标识

  Version:版本号,nuget是通过版本号识别是否最新版本

  Description:描述,程序包的功能描述

  Framework assemblies:程序包所需要引用的.net原生组件

  保存后,点击Publish,填写你的nuget站点,并且输入之前你设置的【apikey】,点击Publish,上传成功。注意不需要追加任何路径,只要站点的url就可。

  

  更新的话,重复上面操作,不过要修改版本号,并且版本号往上加,Nuget才会识别,有兴趣的同学可以反编译nuget.server看看

  

附录:

Install-Package 安装包   -Version 4.3.1 参数指定版本

Uninstall-Package 卸载包

Update-Package 更新包

Get-Package 默认列出本地已经安装了的包 可以加参数 -remote -filter entityframework 来在包源中查找自己想要的包

nuget pack 打包DLL

nuget push 发布程序包

  整个NuGet的使用和服务的搭建都已经完成了,类似的文章,我相信也很多园子里会有很多,为了方便自己回顾,顺便和大家分享,因此将研究成果记录了下来。如果有问题,请下面评论反馈给我,谢谢。

NuGet的使用和服务搭建的更多相关文章

  1. 使用Swagger服务搭建.Net Core API

    使用Swagger服务搭建.Net Core API 创建.Net Core API 新建项目.文件——新建——项目 选择应用程序模板. 设置存放路径,命名方案名称. 创建API. 搭建成功. 使用S ...

  2. ServiceStack.Hello——跨平台.net REST api服务搭建

    ServiceStack.Hello--跨平台.net REST api服务搭建 自己创建: https://github.com/ServiceStack/ServiceStack/wiki/Cre ...

  3. WCFRESTFul服务搭建及实现增删改查

    WCFRESTFul服务搭建及实现增删改查 RESTful Wcf是一种基于Http协议的服务架构风格,  RESTful 的服务通常是架构层面上的考虑. 因为它天生就具有很好的跨平台跨语言的集成能力 ...

  4. 微信小程序语音识别服务搭建全过程解析(项目开源在github)

    silk v3录音转olami语音识别和语义处理的api服务(ubuntu16.04服务器上实现) ## 重要的写在前面 重要事项一: 目前本文中提到的API已支持微信小程序录音文件格式:silk v ...

  5. 微信小程序语音识别服务搭建全过程解析(https api开放,支持新接口mp3录音、老接口silk录音)

    silk v3(或新录音接口mp3)录音转olami语音识别和语义处理的api服务(ubuntu16.04服务器上实现) 重要的写在前面 重要事项一: 所有相关更新,我优先更新到我个人博客中,其它地方 ...

  6. Git服务搭建及github使用教程

    .pos { position: fixed; top: 35%; left: 90% } .pos a { border: 2px solid white; background: #99CCFF; ...

  7. eureka服务搭建

    Server端 引入eureka server的maven依赖 引入依赖时无需给定eureka的版本号,maven会根据当前使用的SpringCloud版本来判断应该引入哪个版本的euraka ser ...

  8. NodeJs之服务搭建与数据库连接

    NodeJs之服务搭建与数据库连接 一,介绍与需求分析 1.1,介绍 Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境. Node.js 使用了一个事件驱动.非阻 ...

  9. JumpServer1.0 服务搭建

    JumpServer1.0 服务搭建 系统环境配置 setenforce 0 systemctl stop iptables.service systemctl stop firewalld.serv ...

随机推荐

  1. http://www.w3cplus.com/animation/create-animated-text-fills.html

    关于svg的资料: http://www.w3cplus.com/animation/create-animated-text-fills.html asp.net中jquery的ajax调用cs文件 ...

  2. VS2010皮肤控件介绍

    在我们平时使用的各种工具中,如QQ,迅雷,以及各种空间等,都提供了一些换肤功能,可以让我们选择各种我们喜欢的界面.本文就对VS中常用的窗口程序做一个简单的换肤,利用一个dll文件来进行实现. 首先我们 ...

  3. find+*的问题

    转自find+*的问题 不久前做移植的时候想把某个目录下的C文件都找出来,然后拷贝下,结果一直报错,我用的是*.c作为pattern.今天看论坛的时候知道为什么了. $ ls test2.c  tes ...

  4. 关于ARP欺骗与MITM(中间人攻击)的一些笔记( 二 )

    一直没有折腾啥东西,直到最近kali Linux发布,才回想起应该更新博客了….. 再次说明,这些技术并不是本人原创的,而是以前记录在Evernote的旧内容(排版不是很好,请谅解),本文是继关于AR ...

  5. pay lip service to

    Understanding Progressive Enhancement中看到了这句话: Concerned with content availability, overall accessibi ...

  6. 匿名hash

    [root@oadb test]# cat a1.pl use Data::Dumper; my @a=qw/1 3 5 7 9/; push @b ,{@a}; print Dumper(@b); ...

  7. 深入分析iSCSI协议的应用

    深入分析iSCSI协议的应用 1 引言 快速增长的存储容量使得企业需要采用网络存储解决方案.目前网络存储技术采用的连接技术主要有光纤通道和TCP/IP.基于IP的网络存储能解决基于光纤通道的网络存储中 ...

  8. [C# 网络编程系列]专题五:TCP编程

    转自:http://www.cnblogs.com/zhili/archive/2012/08/25/2656840.html 前言 前面专题的例子都是基于应用层上的HTTP协议的介绍, 现在本专题来 ...

  9. B. Berland Bingo

    Lately, a national version of a bingo game has become very popular in Berland. There are n players p ...

  10. Chrome 控制台实用指南【转】

    转自伯乐在线. Chrome 控制台实用指南 前言 Chrome浏览器我想是每一个前端er必用工具之一吧,一部分原因是它速度快,体积不大,支持的新特性也比其它浏览器多,还有一部分我想就是因为它的控制台 ...