使用NuGet管理项目类库引用
NuGet 是微软开发平台(包括.NET平台)的一个包管理器,这里只介绍和.NET相关的NuGet Visual Studio扩展客户端, 在VS2010 ,VS2012 ,VS2013中默认集成了NuGet 工具, 有了它,管理项目中的第三方库变得异常简单和便捷。
NuGet 提供用户两种交互方式, 一是用户界面, 二是powershell命令行. 从vs的工具->包管理器 我们可以看到这两个选项

NuGet用户界面

NuGet命令行

下面主要介绍命令行的使用:
- Get-Help nuget , 打印NuGet包含的命令, 比如获得项目中引用的库文件Get-Package, 安装,卸载,更新库 Install/Uninstall/Update-Package等
PM> Get-Help nuget
TOPIC
about_NuGet SHORT DESCRIPTION
Provides information about NuGet Package Manager commands. LONG DESCRIPTION
This topic describes the NuGet Package Manager commands. NuGet is an integrated package
management tool for adding libraries and tools to .NET projects. The following NuGet cmdlets are included. Cmdlet Description
------------------ ----------------------------------------------
Get-Package Gets the set of installed packages. With -ListAvailable,
gets the set of packages available from the package source. Install-Package Installs a package and its dependencies into the project. Uninstall-Package Uninstalls a package. If other packages depend on this package,
the command will fail unless the –Force option is specified. Update-Package Updates a package and its dependencies to a newer version. Add-BindingRedirect Examines all assemblies within the output path for a project
and adds binding redirects to the application (or web)
configuration file where necessary. Get-Project Returns a reference to the DTE (Development Tools Environment)
for the specified project. If none is specifed, returns the
default project selected in the Package Manager Console. Open-PackagePage Open the browser pointing to ProjectUrl, LicenseUrl or
ReportAbuseUrl of the specified package. Register-TabExpansion Registers a tab expansion for the parameters of a command. SEE ALSO
Online documentation: http://go.microsoft.com/fwlink/?LinkID=206619
Get-Package
Install-Package
Uninstall-Package
Update-Package
Add-BindingRedirect
Get-Project
Open-PackagePage
Register-TabExpansion
- Get-Help ,打印命令帮助, 相当于linux bash的 man / get-help ,比如我们想看Get-Package 可以干嘛,输入get-help get-package ,输出如下:
PM> get-help get-package NAME
Get-Package SYNOPSIS
Gets the set of installed packages. Use the -ListAvailable flag to list packages available from the package source. SYNTAX
Get-Package -Source <string> [-ListAvailable] [-Updates] [-ProjectName <string>] [-Filter <string>] [-First <int>] [-Skip <in
t>] [-AllVersions] [-IncludePrerelease] [<CommonParameters>] DESCRIPTION
Gets the set of installed packages. Use the -ListAvailable flag to list packages available from the package source. RELATED LINKS
Online version: http://docs.nuget.org/
Get-Package REMARKS
To see the examples, type: "get-help Get-Package -examples".
For more information, type: "get-help Get-Package -detailed".
For technical information, type: "get-help Get-Package -full".
NuGet命令使用PowerShell, 所以对PowerShell熟悉的同学可以很快上手使用。
- Install-Package ,用于安装包 , 比如我们想在名称为MvcApp的 asp.net mvc项目中引用jquery ,直接输入Install-Package jquery即可安装NuGet资源中最新版jquery , 当然我们也可以指定安装某个版本的jquery, 比如1.8.2 版jquery , 安装到MvcApp中
PM> Install-Package jquery -Version 1.8.2 -ProjectName MvcApp
'jQuery 1.8.2' already installed.
Adding 'jQuery 1.8.2' to MvcApp.
Successfully added 'jQuery 1.8.2' to MvcApp.
安装好后,你去mvc项目的Scripts目录就可以看到添加的jquery引用(包括智能提示文件和min文件及未经压缩的文件),另外你可以看到packages.config文件里面新增了一条引用记录:
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="DotNetOpenAuth.AspNet" version="4.1.4.12333" targetFramework="net45" />
<package id="DotNetOpenAuth.Core" version="4.1.4.12333" targetFramework="net45" />
<package id="DotNetOpenAuth.OAuth.Consumer" version="4.1.4.12333" targetFramework="net45" />
<package id="DotNetOpenAuth.OAuth.Core" version="4.1.4.12333" targetFramework="net45" />
<package id="DotNetOpenAuth.OpenId.Core" version="4.1.4.12333" targetFramework="net45" />
<package id="DotNetOpenAuth.OpenId.RelyingParty" version="4.1.4.12333" targetFramework="net45" />
<package id="EntityFramework" version="5.0.0" targetFramework="net45"></package>
<package id="jQuery" version="1.8.2" targetFramework="net45" />
<package id="knockoutjs" version="2.2.0" targetFramework="net45" />
<package id="Microsoft.AspNet.Mvc" version="4.0.30506.0" targetFramework="net45" />
<package id="Microsoft.AspNet.Mvc.FixedDisplayModes" version="1.0.0" targetFramework="net45" />
<package id="Microsoft.AspNet.Razor" version="2.0.30506.0" targetFramework="net45" />
<package id="Microsoft.AspNet.Web.Optimization" version="1.0.0" targetFramework="net45" />
<package id="Microsoft.AspNet.WebApi" version="4.0.30506.0" targetFramework="net45" />
<package id="Microsoft.AspNet.WebApi.Client" version="4.0.30506.0" targetFramework="net45" />
<package id="Microsoft.AspNet.WebApi.Core" version="4.0.30506.0" targetFramework="net45" />
<package id="Microsoft.AspNet.WebApi.OData" version="4.0.30506" targetFramework="net45" />
<package id="Microsoft.AspNet.WebApi.WebHost" version="4.0.30506.0" targetFramework="net45" />
<package id="Microsoft.AspNet.WebPages" version="2.0.30506.0" targetFramework="net45" />
<package id="Microsoft.AspNet.WebPages.Data" version="2.0.20710.0" targetFramework="net45" />
<package id="Microsoft.AspNet.WebPages.OAuth" version="2.0.30506.0" targetFramework="net45" />
<package id="Microsoft.AspNet.WebPages.WebData" version="2.0.30506.0" targetFramework="net45" />
<package id="Microsoft.Data.Edm" version="5.2.0" targetFramework="net45" />
<package id="Microsoft.Data.OData" version="5.2.0" targetFramework="net45" />
<package id="Microsoft.jQuery.Unobtrusive.Ajax" version="2.0.30506.0" targetFramework="net45" />
<package id="Microsoft.jQuery.Unobtrusive.Validation" version="2.0.30506.0" targetFramework="net45" />
<package id="Microsoft.Net.Http" version="2.0.20710.0" targetFramework="net45" />
<package id="Microsoft.Web.Infrastructure" version="1.0.0.0" targetFramework="net45" />
<package id="Modernizr" version="2.6.2" targetFramework="net45" />
<package id="Newtonsoft.Json" version="4.5.11" targetFramework="net45" />
<package id="System.Spatial" version="5.2.0" targetFramework="net45" />
<package id="WebGrease" version="1.3.0" targetFramework="net45" />
</packages>
另外如果引用的包存在依赖, NuGet会包含下载所有的依赖文件。
- Update-Package ,更新包, 比如我们要使用1.9版的jquery,如下
PM> Update-Package jquery -Version 1.9 -ProjectName MvcApp
Updating 'jQuery' from version '1.8.2' to '1.9.0' in project 'MvcApp'.
Removing 'jQuery 1.8.2' from MvcApp.
Successfully removed 'jQuery 1.8.2' from MvcApp.
Adding 'jQuery 1.9.0' to MvcApp.
Installing 'jQuery 1.9.0'.
Successfully installed 'jQuery 1.9.0'.
Successfully added 'jQuery 1.9.0' to MvcApp.
Uninstalling 'jQuery 1.8.2'.
Successfully uninstalled 'jQuery 1.8.2'.
我们之前装的1.8.2被删除, 1.9.0版的jquery被引用, 同时packages.config文件也会更新。
- Uninstall-Package ,卸载包, 比如我们不用jquery了, 删除之 (如果有其他包引用jquery ,那么应该先删除依赖jquery的包,不然会报错。)
PM> Uninstall-Package jQuery
Removing 'jQuery 1.9.0' from MvcApp.
Successfully removed 'jQuery 1.9.0' from MvcApp.
Uninstalling 'jQuery 1.9.0'.
Successfully uninstalled 'jQuery 1.9.0'.
同样,packages.config会删除jquery记录。
- Get-Package ,获得项目引用的包列表,或NuGet资源中心的包列表,比如获得MvcApp引用了那些包
PM> Get-Package -ProjectName MvcApp Id Version Description/Release Notes
-- ------- -------------------------
DotNetOpenAuth.AspNet 4.1.4.12333 Enables web site visitors to log into an ASP.NET web application via popular identity provi...
DotNetOpenAuth.Core 4.1.4.12333 This package contains shared code for other NuGet packages, and contains no public API in a...
DotNetOpenAuth.OAuth.Consumer 4.1.4.12333 Improve usability, reliability, conversion rates and security simultaneously by simply aski...
DotNetOpenAuth.OAuth.Core 4.1.4.12333 This package contains shared code for other NuGet packages, and contains no public API in a...
DotNetOpenAuth.OpenId.Core 4.1.4.12333 This package contains shared code for other NuGet packages, and contains no public API in a...
DotNetOpenAuth.OpenId.Relyi... 4.1.4.12333 Increase conversion rates to your web site by lowering the bar to create an account with yo...
EntityFramework 5.0.0 Entity Framework is Microsoft's recommended data access technology for new applications.
knockoutjs 2.2.0 A JavaScript MVVM library to help you create rich, dynamic user interfaces with clean maint...
Microsoft.AspNet.Mvc 4.0.30506.0 This package contains the runtime assemblies for ASP.NET MVC. ASP.NET MVC gives you a power...
Microsoft.AspNet.Mvc.FixedD... 1.0.0 This package contains a workaround for a bug affecting mobile view caching in ASP.NET MVC 4...
Microsoft.AspNet.Razor 2.0.30506.0 This package contains the runtime assemblies for ASP.NET Web Pages. ASP.NET Web Pages and t...
Microsoft.AspNet.Web.Optimi... 1.0.0 ASP.NET Optimization introduces a way to bundle and optimize css/js files.
Microsoft.AspNet.WebApi 4.0.30506.0 This package contains everything you need to host ASP.NET Web API on IIS. ASP.NET Web API i...
Microsoft.AspNet.WebApi.Client 4.0.30506.0 This package adds support for formatting and content negotiation to System.Net.Http. It inc...
Microsoft.AspNet.WebApi.Core 4.0.30506.0 This package contains the core runtime assemblies for ASP.NET Web API. This package is used...
Microsoft.AspNet.WebApi.OData 4.0.30506 This package contains everything you need to create OData endpoints using ASP.NET Web API a...
Microsoft.AspNet.WebApi.Web... 4.0.30506.0 This package contains everything you need to host ASP.NET Web API on IIS. ASP.NET Web API i...
Microsoft.AspNet.WebPages 2.0.30506.0 This package contains core runtime assemblies shared between ASP.NET MVC and ASP.NET Web Pa...
Microsoft.AspNet.WebPages.Data 2.0.20710.0 This package contains the runtime assemblies for ASP.NET Web Pages. ASP.NET Web Pages and t...
Microsoft.AspNet.WebPages.O... 2.0.30506.0 This package contains the runtime assemblies for ASP.NET Web Pages. ASP.NET Web Pages and t...
Microsoft.AspNet.WebPages.W... 2.0.30506.0 This package contains the runtime assemblies for ASP.NET Web Pages. ASP.NET Web Pages and t...
Microsoft.Data.Edm 5.2.0 Classes to represent, construct, parse, serialize and validate entity data models. Targets ...
Microsoft.Data.OData 5.2.0 Classes to serialize, deserialize and validate OData payloads. Enables construction of ODat...
Microsoft.jQuery.Unobtrusiv... 2.0.30506.0 jQuery plugin that unobtrusively sets up jQuery.Validation.
Microsoft.Net.Http 2.0.20710.0 This package provides a programming interface for modern HTTP applications. This package in...
Microsoft.Web.Infrastructure 1.0.0.0 This package contains the Microsoft.Web.Infrastructure assembly that lets you dynamically r...
Modernizr 2.6.2 Modernizr adds classes to the <html> element which allow you to target specific browser fun...
Newtonsoft.Json 4.5.11 Json.NET is a popular high-performance JSON framework for .NET
System.Spatial 5.2.0 Contains a number of classes and canonical methods that facilitate geography and geometry s...
WebGrease 1.3.0 Web Grease is a suite of tools for optimizing javascript, css files and images.
以上几个命令是NuGet管理包的几个常用命令,当然我们也可以选择在用户界面中进行相应操作,有兴趣探索更多命令和功能的同学可以参考NuGet官方网站 http://docs.nuget.org/。
总结:
有了NuGet, 包和包之间的依赖管理从此变得异常简单和便捷, 在团队开发中, 大家只用共享一份相同的packages.config 配置文件即可避免库引用错乱的局面。 我们甚至可以编写一小段powershell代码,为所有项目自动引用需要的包。
使用NuGet管理项目类库引用的更多相关文章
- NuGet管理
使用NuGet管理项目类库引用 NuGet 是微软开发平台(包括.NET平台)的一个包管理器,这里只介绍和.NET相关的NuGet Visual Studio扩展客户端, 在VS2010 ,VS2 ...
- 【转】使用 NuGet 管理项目库-Phil Haack
原文地址:https://msdn.microsoft.com/zh-cn/magazine/hh547106.aspx 无论多么努力,Microsoft 也没办法提供开发人员所需要的每一个库. 虽然 ...
- 使用 NuGet 管理项目库
使用 NuGet 管理项目库 Phil Haack 本文转载自:http://msdn.microsoft.com/zh-cn/magazine/hh547106.aspx 无论多么努力,Micros ...
- [转载]使用 NuGet 管理项目库
原文:http://msdn.microsoft.com/zh-cn/magazine/hh547106.aspx 无论多么努力,Microsoft 也没办法提供开发人员所需要的每一个库. 虽然 Mi ...
- 【VS开发】使用 NuGet 管理项目库
NuGet 使用 NuGet 管理项目库 Phil Haack 无论多么努力,Microsoft 也没办法提供开发人员所需要的每一个库. 虽然 Microsoft 在全球的员工人数接近 90,000, ...
- 在Visual Studio中使用NuGet管理项目库
NuGet是用来管理项目中引用的各个组件插件什么什么东西的东西,最近使用以后发现对于项目引用的维护非常方便. 暂时转一篇MSDN的文章,其实这个文章的内容就够了: http://msdn.micros ...
- 如何在android项目中引用project作为类库引用
前言: 在我们开发项目的时候,存在很多多个项目共有一个资源.逻辑代码的情况,这种情况一般我们采用在开发项目中导入别的项目作为引用的类库.资源等. 操作: 1. 新建一个android项目common ...
- Nuget 命令 NuGet 管理项目库
因为可视化库程序包管理器的局限性,有很多需要的功能在界面中无法完成. 以下技巧均需要在"程序包管理器控制台"中使用命令来完成. 一.改变项目目标框架后,更新程序包 当改变项目的目标 ...
- Nuget管理自己的项目库
Nuget是什么 Nuget 是一种 Visual Studio 扩展工具,它能够简化在 Visual Studio 项目中添加.更新和删除库(部署为程序包)的操作.(官方地址)相信大家对这个应该还是 ...
随机推荐
- 【设计模式之装饰者模式InJava】
需求:定义一个操作系统OS接口,安装Windows10操作系统,在上面安装虚拟机VMWare,虚拟机里装Linux; 然后在Linux中安装虚拟机VMware,再在虚拟机里安装MacOS操作系统. 实 ...
- 【转】 Nginx深入详解之多进程网络模型
[转自]http://blog.chinaunix.net/uid-22312037-id-3974068.html 一.进程模型 Nginx之所以为广大码农喜爱,除了其高性能外,还有其 ...
- Java多线程14:生产者/消费者模型
什么是生产者/消费者模型 一种重要的模型,基于等待/通知机制.生产者/消费者模型描述的是有一块缓冲区作为仓库,生产者可将产品放入仓库,消费者可以从仓库中取出产品,生产者/消费者模型关注的是以下几个点: ...
- Java虚拟机2:Java内存区域及对象
几个计算机的概念 为以后写文章考虑,也为巩固自己的知识和一些基本概念,这里要理清楚几个计算机中的概念. 1.计算机存储单位 从小到大依次为位Bit.字节Byte.千字节KB.兆M.千兆GB.TB,相邻 ...
- 人人都是 DBA(VII)B 树和 B+ 树
B 树(B-Tree)是为磁盘等辅助存取设备设计的一种平衡查找树,它实现了以 O(log n) 时间复杂度执行查找.顺序读取.插入和删除操作.由于 B 树和 B 树的变种在降低磁盘 I/O 操作次数方 ...
- Nim教程【七】
这是国内第一个关于Nim的系列教程 先说废话 很开心,在今天凌晨快一点多的时候拿到了 nim-lang.com:nim-lang.cn:nim-lang.net 这三个域名,到不是为了投资,准备用ni ...
- Unity3d热更新全书-加载(一)从AssetBundle说起
Unity3D动态下载资源,有没有解?有,AssetBundle就是通用解,任何一本书都会花大幅篇章来介绍AssetBundle. 我们也来说说AssetBundle 我们试全面的分析一下Unity3 ...
- [我给Unity官方视频教程做中文字幕]beginner Graphics – Lessons系列之摄像机介绍Cameras
[我给Unity官方视频教程做中文字幕]beginner Graphics – Lessons系列之摄像机介绍Cameras 最近得到一些Unity官方视频教程,一看全是纯英文的讲解,没有任何字幕或者 ...
- 目前在做的一个web应用程序的前端选型
最近进入了一个新的项目组,要新起一个项目.这个Web项目是一个企业内部使用的系统,主要用来记录.追踪.管理潜在客户的数据.该系统有以下特点: 需要支持IE10及以上版本: 后端采用micro serv ...
- Senparc.Weixin.MP SDK 微信公众平台开发教程(五):使用Senparc.Weixin.MP SDK
Senparc.Weixin.MP SDK已经涵盖了微信6.x的所有公共API. 整个项目的源代码以及已经编译好的程序集可以在这个项目中获取到:https://github.com/JeffreySu ...