Nuget Tool
2012-01-04 14:51 chenkai 阅读(17159) 评论(10) 编辑 收藏 举报Nuget 这个工具最先是在MIX11上开始让我注意.不知道当时看MIX同学是否注意到一个小细节.-就是所有MIX11 Code演示环节中MS开发人员都使用Nuget.本篇介绍一些Nuget安装和一些在实际项目中基本用法.
首先 解释一下Nuget Tool是什么?
NuGet 是一种 Visual Studio 扩展工具,它能够简化在 Visual Studio 项目中添加、更新和删除库(部署为程序包)的操作。 NuGet 程序包是打包成一个文件的文件集,扩展名是 . nupkg,使用开放打包约定 (OPC) 格式.
在没有使用Nuget工具之前.如果我们要在一个普通.NET项目中添加一个库的引用.最简单的方式就是添加DLL引用的方式实现第三方代码库引用.通过下载解压.添加引用操作.如果在发布时还需要为项目依赖项进行大量手工整理.是否发现.在DLL引入到发布整个过程存在一个管理”真空“状态.如果要向其他开发者或组织共享我们代码.是否意味更复杂的操作.着恰恰也是Nuget所做的.
安装Nuget有两种方式.方式一打开Visual Studio 2010,打开Tool->Extension Manager窗体.选择Online Gallery,在搜索框中输入NuGet看到:
点击Download下载会自动安装,另外一种方式打开http://www.nuget.org/直接下载安装文件NuGet Manager . 点击运行开始安装:
选择安装工具 下一步:
安装完成.如果在安装过程出现错误货没有正确安装会在安装界面提示:
关于安装出错后通过查看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的形式来统一管理内部开发团队库共享. 大大提高开发效率.
参考资源: