Nuget 这个工具最早是在MIX11上开始让我注意.不知道当时看MIX同窗是否注意到一个小细节.-就是全部MIX11 Code演示环节中MS开发人员都使用Nuget.本篇介绍一些Nuget安装和一些在实际项目中基本用法.shell
首先 解释一下Nuget Tool是什么?安全
NuGet 是一种 Visual Studio 扩展工具,它可以简化在 Visual Studio 项目中添加、更新和删除库(部署为程序包)的操做。 NuGet 程序包是打包成一个文件的文件集,扩展名是 . nupkg,使用开放打包约定 (OPC) 格式.ide
在没有使用Nuget工具以前.若是咱们要在一个普通.NET项目中添加一个库的引用.最简单的方式就是添加DLL引用的方式实现第三方代码库引用.经过下载解压.添加引用操做.若是在发布时还须要为项目依赖项进行大量手工整理.是否发现.在DLL引入到发布整个过程存在一个管理”真空“状态.若是要向其余开发者或组织共享咱们代码.是否意味更复杂的操做.着偏偏也是Nuget所作的.工具
安装Nuget有两种方式.方式一打开Visual Studio 2010,打开Tool->Extension Manager窗体.选择Online Gallery,在搜索框中输入NuGet看到:命令行
点击Download下载会自动安装,另一种方式打开http://www.nuget.org/直接下载安装文件NuGet Manager . 点击运行开始安装:3d
选择安装工具 下一步:对象
安装完成.若是在安装过程出现错误货没有正确安装会在安装界面提示:blog
关于安装出错后经过查看Install Log 肯定出错的缘由:资源
若是以为麻烦.也能够不看.直接找到上图的目录删除掉NuGet Package Manager文件夹,从新安装Nuget Tool便可.安装完成后能够建立一个Windows phone Application 打开Tool->Library Package Manager->Package Manager Console:开发
能够经过在控制台Package Manager Console 输出目录管理库 首先在在线的http://www.nuget.org/packages目录下找到对应库初始化路径 相似找到Json.NET http://www.nuget.org/packages/Newtonsoft.Json 初始化路径为:
输入:Install-Package Newtonsoft.Json
若是对应库文件较大.则会在Visual Studio 右下角提示有下载进度.安装完成后:
能够在当前项目目录中看到已经成功添加到引用中:
能够引用管理手动添加库文件.在解决方案的References引用能够看到:
多了一个Manage Nuget Packages打开管理窗体可以实现已经安装库文件管理:
Nuget提供基于 Windows PowerShell 的控制台窗口(称做程序包管理器控制台)以及一组 Windows PowerShell 命令与 NuGet 进行交互。 Windows PowerShell 是基于 .NET 的脚本语言和命令行 shell,很是适合组成命令集,并可以处理对象.固然PowerShell提供强大支持能够Package Manager Console经过指令直接管理卸载库 例如卸载已经引用Json.NET库输入:Unstall-Package Newtonsoft.Json卸载.若是想看到当前项目已经引用的Package在Console 直接经过指令的方式获取 Get-Package:
看到当前项目中已经使用库文件 以及版本其余信息.若是已经引用的组件存在新的版本 依然能够经过Update-Package批量更新已经引用的库:
命令尝试将每一个程序包都更新到最新版本,若是任何程序包包含重大改变,这会是一项很是重大的操做。 在多数状况下,您仅但愿将各程序包更新至最新的修补程序版本。 这叫“安全”更新,前提是具备较大内部版本号或修订号(但具备相同的主版本号和次版本号)的程序包可以向后兼容。 仅添加 Safe 标记以执行安全更新:例:Update-Package –Safe
固然咱们可以如今操做都是基于在线Nuget官方数据源Package操做.固然咱们能够PAckage数据源设置成本地 找到绿色按钮Package Manager Settings:
打开并在一个指定本地目录下添加一个本地Package数据源:
能在Console看到指定的数据源设置分类LocalPackages:
固然对于组织结构更大的公司和开发团队.若是简单的使用SVN和Git管理方式依然不容易控制不一样库版本和对外共享的控制.Nuget针对企业用户提供能够在企业内部搭建一个Nuget Server的形式来统一管理内部开发团队库共享. 大大提升开发效率.
参考资源: