http://kb.cnblogs.com/page/143190/html
1. NuGet是什么?
NuGet is a Visual Studio 2010 extension that makes it easy to add, remove, and update libraries and tools in Visual Studio projects that use the .NET Framework. This topic lists documentation that will help you use NuGet packages and create your own.java NuGet 是一个Visual Studio的扩展。在使用Visual Studio开发基于.NET Framework的应用时,NuGet可以令你在项目中添加、移除和更新引用的工做变得更加快捷方便。程序员
这就是说: 咱们每每在开发项目里,会使用一些第三方的dll, 如:Newtonsoft.Json.dll (它为咱们提供了进行序列化和反序列化解决方案, 颇有用,也很稳定,还颇有名气)。web 可是,咱们每每也面临随着项目升级,对这些引入的第三方插件进行升级的可能和必要。浏览器 比方说,本来的项目是vs2008 + C# 3.5 实现的,并引入了Newtonsoft.Json.dll 2.0版本, 如今对项目升级成了Vs 2010 + C# 4.0。服务器 若是 你想或者必须将旧版本升级到最新版本才能工做或者仅是保持版本上的一致; 同时,Newtonsoft 提供Json.Net对C# 4.0 支持版本,即:Newtonsoft.Json.dll 4.0。app 你就须要到官网或者经过Google 去寻找它的最新版本,下载,解压,而后替代等操做。 彷佛看上去,也没多少复杂的事情, 也习觉得常了。谁叫咱引用别人的东西,只能跟着走了,习惯了这样的更新,总比本身写更快吧。maven
如今,NuGet 将这个过程系统化,令你能够更加方便的查找你要的第三方的dll, 同时,还能够为你提供自动或者手动更新,而无需你在人肉搜索与更新了。工具 |
初次认识NuGet是在去年把项目升级为MVC3的时候,当时看到工具菜单多一项Library Package Manager,右键项目文件多了一项Manage Nuget Packages...,这是个神马玩意儿,当时是一头雾水,后台查了些资料才知到NuGet是 Visual Studio的一个扩展,引用dudu的话来讲就是管理程序的包包,能够参考msdn上这篇文章使用 NuGet 管理项目库以及我们博客园站长dudu写的程序员,用NuGet管理好你的类库,有些相似java中经常使用的maven 学习
为何要使用NuGet
简单的说NuGet能够是咱们的工做更方便,当咱们的项目里要引用到的一些库时候,好比JQuery、Newtonsoft.Json、log4net等,咱们须要从网上下载这些库,而后依次拷贝到各个项目中,当有的类库有更新时又不得再也不重复一遍非常繁琐 ,这时就能够考虑使用NuGet来帮咱们管理和更新这些类库,并且更新类库时会自动添加类库的相关引用,方便至极。固然网上一些咱们经常使用的类库更新频率不是很高并且即使出了新版本咱们也不必老是保持最新,故这点对咱们的帮助比较有限,我的认为NuGet最大的好处在于能够搭建本身的类库服务器,想一想一下吧,在一些较大些的公司里面有不少的项目,而后其中有一些是整个组,甚至整个公司通用的类库,当这些类库有更新后咱们须要依次拷贝到咱们的项目,甚至于有时候咱们本身都搞不清楚各个项目里的版本是否一致,有时偶尔一两个项目忘了复制更新出现莫名其妙的错误,为此头疼不已,如今有了NuGet,世界今后而不一样。
安装NuGet扩展
要使用NuGet首先须要安装它(在安装了MVC3的系统上已自动安装了NuGet)
1. 点击 工具-->扩展管理器(R)...-->右上角搜索框输入NuGet
2. 点击 NuGetPackage Manager 项上面的下载按钮开始下载NuGet
3. 下载完成后出现安装页面,点安装开始安装
4. 很快安装完成,而后点击关闭完成整个安装
5. 安装完后NuGet暂时不能用,须要从新启动下VS才行,重启后完毕后打开 扩展管理器(R)... 在已安装的扩展里能够看到NuGet Package Manager已经安装好了
使用NuGet下载须要的类库
1. 打开NuGet管理界面
2. 出现以下界面,能够在里面找本身想要的类库也能够在右上角搜索里面输入关键字查找本身想要的类库,找到合适本身的类库后点install进行安装
3. 这里咱们选择安装Json.Net,点击安装好出现组件下载界面
4. 下载完成后会出现提示将类库安装到什么项目,这里咱们选择安装到TestConsole项目
5. 安装完成后能够看到已经安装的Josn.Net显示一个已安装的小对勾
6. 打开项目引用能够看到咱们刚选择的类库Newtonsoft.Json已经自动添加到项目引用中
使用命令行管理你的类库
1. NuGet提供了命令行安装方法,在菜单中选择Package Manager Console,打开命令行控制台
2. 出现NuGet控制台界面,默认类库源(Package source)为官方站点,也能够指向本身搭建的本地或内网站点,Default project表示默认将下载的类库添加到那个项目的引用中
3. NuGet控制台有几个经常使用命令
Get-Package 获取当前项目已经安装的类库
Install-Package 安装指定类库,命令格式以下:Install-Package 类库ID,如Install-Package Newtonsoft.Json 这里须要注意的是类库的ID是惟一的,指向命令后会自动搜索指定类库源里指定ID类库,若找到则自动下载并添加引用,找不到则会出现找不到类库的提示
Uninstall-Package 卸载指定类库,命令格式以下:Uninstall-Package 类库ID,如Uninstall-Package Newtonsoft.Json
Update-Package 更新指定类库,命令格式以下:Update-Package 类库ID,如Update-Package Newtonsoft.Json
ps:刚开始不熟悉时可使用界面方式下载和更新类库,有必定经验后仍是建议使用控制台添加、更新类库这样很方便,因为使用控制台须要知道类库的准确ID,能够到http://www.nuget.org/packages这里去查找,把本身经常使用的ID记录下方便之后使用
NuGet相对于咱们最重要的功能是可以搭建本身的NuGet服务器,实现公司内部类库的轻松共享更新。在安装好NuGet扩展后,咱们已经可以经过NuGet轻松下载本身须要的类库,下面来讲一说如何将本身的项目类库进行打包发布
使用图形界面打包本身的类库
NuGet可使用NuGet.exe在命令行下进行类库打包,也可使用图形化界面进行打包,估计不少朋友都和我同样对不熟悉的命令行有些感冒,因此在此仅讲述下使用图形化界面进行类库打包
1. 首先下载 包包管理器 NuGetPackageExplorer,顾名思义,包包管理器能够用来建立新的类库包,也能够浏览已经建立好的类库包
2. 下载完成后,双击 NuGetPackageExplorer.application 进行安装,安装完成后会在桌面上生成一个NuGet Package Explorer 的快捷方式
3. 双击NuGet Package Explorer出现启动界面,选择Create a new package(Ctrl+N)建立一个新包
4. 选择菜单 Edit > Edit Package Metadata (或者 CTRL + K) 编辑包包信息
这里能够编辑类库包的信息和添加类库、程序集的引用解释下几个比较重要的字段
Id:用于定位类库包的惟一标示,如在命令行下执行 Install-Package MyPackage 这里的MyPackage就是包包的Id值
Version:类库的版本号,这里建议和程序集的真实版本号保持一致,以避免发生混淆
Dependencies:此类库依赖的程序集,根据实际状况添加依赖类库的Id和版本号,若无留空便可,这里须要注意下填写的依赖类库须要在NuGet服务器上能找到,不然没法完成自动引用添加
Framework assemblies:依赖的Framework 程序集,根据实际须要选择便可,通常无需设置
除以上四项之外其余属性根据实际状况修改便可,若本身用不修改也中,不过为了使用方便仍是建议把类库描述(Description)填写下
5. 编辑好包包信息后接下来添加DLL到包包中
能够选择 右键-->Add Existinng File... 选择dll添加,也能够直接拖拽DLL到 Package contents 窗口,此例选择拖拽方式
直接拖拽dll到窗口后,会出现提示:是否将 Winista.HtmlParser.dll放到lib 文件夹下,通常咱们选择是
6. DLL添加完成后,快捷键Ctrl + K 修改包包信息Id为Winista.HtmlParser,版本号为1.8.0
7. 信息修改和dll都添加完毕后,选择File --> Save(或Ctrl + S)将文件进行保存,默认文件名为Id + 版本号.nupkg
8. 完成保存后如须要发布到网上,选择File--> Publish...(或Ctrl + P)
默认的发布地址是官网,发布 Key须要到官网去注册一个帐号,而后就能够获得,这里不在复述,若无需发布直接关闭便可
ps:这里没有讲述如何打包项目文件,通常状况下咱们本身将项目文件编译成DLL而后使用图形化界面打包便可知足需求,若实际工做须要高度集成彻底自动化操做可自行去研究下官方文档http://docs.nuget.org/
添加DLL默认会添加Lib文件夹,额外的菜单上还有不少.net文件夹,src等文件夹,这些文件夹只是对文件上的一个物理上的划分而已,只是为了帮助咱们作好文件分类,没有其余的用途,dll文件能够随便放置,不过为了规范仍是建议按照一般习惯来放置。
建立NuGetServer Web站点
1. 新建Web站点,选择 文件-->新建项目-->Asp.Net 空 Web应用程序
2. 选择 工具-->Library Package Manager-->Package Manager Console 打开NuGet命令行控制台
3. 在控制台输入Install-Package NuGet.Server (请保持Package source:官方源,即 Nuget offical package source,通常默认即为官方Package源)
4. 回车确认后开始下载并安装NuGet.Server类库及相关引用,并自动添加引用到项目
注:具体输出根据版本不一样会略有不一样
自动添加的引用
5. 在控制台输入 Get-Package 能够看到刚刚安装的类库
6. 除添加类库引用外,还自动添加了一些文件(关于这些文件及其做用本文不作探讨,有兴趣的能够自行研究下,都很简单)
/App_Readme/
/App_Readme/Elmah.txt
/DataServices/
/DataServices/Packages.svc
/DataServices/Routes.cs
/Packages/
/Packages/Readme.txt
/Default.aspx
/favicon.ico
/packages.config
同时Web.config也被修改,添加了一些配置项
7. 至此NuGet.Server站点已经建立完毕,恩,你没有看错,就是这么简单,接下来部署到本地或IIS站点便可使用了
1. 发布网站到本地
2. IIS里面创建站点www.mynuget.com,主机头www.mynuget.com,应用程序池为.Net4.0集成模式,目录指向站点发布的目录
3. 设置hosts 将www.mynuget.com执向本机
4. 设置好hosts后,从新打开浏览器输入网址:http://www.mynuget.com/
5. 查看已经发布的类库包 http://www.mynuget.com/nuget/Packages (能够把已经打好包的类库放到网站下的Packages文件夹下便可)
1. 选择 工具-->Library Package Manager-->Package Manager Settings
2. 输入名称 MyNuGetServer及包包源地址 http://www.mynuget.com/nuget 点击Add完成源添加
7. 查看刚刚添加的类库源 工具-->Library Package Manager-->Manager NuGet Packages for Solution... 点击刚添加的源MyNuGetServer能够看到咱们放到站点下的类库包,选中须要的包包点击 Install完成安装
8. 也能够在控制台下安装,将类库源执行咱们创建的源 MyNuGetServer,控制台下输入Install-Package Winista.HtmlParser完成安装
如今咱们已经成功的搭建了本身的NuGet服务器。
注意点:
1. NuGet包包是放置在站点根目录下面的Packages文件夹下,如须要改变能够在配置文件packagesPath中进行设置,能够设置为相对目录或者物理目录
<appSettings> <!-- Change the path to the packages folder. Default is ~/Packages. This can be a virtual or physical path. --> <add key="packagesPath" value="" /> </appSettings>
2. 如何管理咱们的包包,能够根据须要自行写个上传下载的文件管理功能,须要时上传到Packages文件下,不须要了删除便可,也能够像我同样写了个FTP服务,使用ftp上传下载
3. 最好是为NuGet单独创建个站点这样管理着方便,若不方便创建独立站点能够随便找个现有的web站点,在里面安装NuGet.Server而后发布便可
回头看整个过程:安装NuGet扩展,下载网上的类库包供本身使用,打包本身的类库,搭建本身的NuGet服务器,整个流程基本走完了,剩下的就是咱们如何去利用好NuGet这个强大的工具了。