如何通过NuGet包管理器高效管理项目依赖库?
摘要:使用 NuGet 管理项目库Phil Haack本文转载自:http:msdn.microsoft.comzh-cnmagazinehh547106.aspx无论多么努力,Microsoft 也没办法提供开发人员所需要的每一个库。
使用 NuGet 管理项目库
Phil
Haack
本文转载自:http://msdn.microsoft.com/zh-cn/magazine/hh547106.aspx
无论多么努力,Microsoft 也没办法提供开发人员所需要的每一个库。虽然
Microsoft 在全球的员工人数接近 90,000,但全球的开发人员数以百万计。指望 Microsoft 满足每一个人的需求是不现实的,也不可想像。因此,开发人员通常得自己动手解决问题,他们目前已经编写了成千上万的实用库,并将其发布到
Web 上。
如何共享如此多的库是一个令人头痛的问题。共享和重用代码是一个很大的挑战。不相信?请随便走进一间中型或大型工作室,问问他们有多少日志记录库。访问多家公司后,您将发现他们拥有比例非常高的内部日志记录库,而这些库中有一些非常不错,例如,Log4Net、NLog
和 Error Logging Modules and Handlers(即 ELMAH)。
当一位开发人员开始新项目时,他将面对一张空白的画布。他如何去发现这些有用的库?如何将库集成到当前项目中并管理库的依赖项和更新呢?
ELMAH 就是一个非常有用的库,是由开发人员自己编写的。ELMAH
能够在出现异常时记录 Web 应用程序中所有未经处理的异常以及所有请求信息,例如,标头、服务器变量等。假设您刚刚听说 ELMAH 并希望在下一个项目中使用它。
您可能会采取下列步骤:
查找
ELMAH。由于它名称独特,Bing 搜索的第一条搜索结果将是 ELMAH Google 代码页。
下载正确的
zip 包。该站点的下载页面有多个 zip 包。您必须思考并选取正确的一个。有时,您并不能一眼就看出正确的是哪个。
“取消阻止”程序包。从
Web 下载程序包后,您需要右键单击该文件,打开“属性”对话框,然后单击“取消阻止”按钮以从该文件删除“Web 的标记”。
验证其哈希值是否与托管环境提供的哈希值相符。Google
代码站点会显示代表该 zip 文件的 QR 代码。在您认识的开发人员中,有多少会抽出时间来根据 QR 代码验证文件?
将程序包的内容解压缩到解决方案中的特定位置。大多数开发人员会避免将程序集解压缩到
bin 目录,这是因为该目录用于生成输出而非输入,并且不在版本控制的跟踪范围之内。实际上,有必要将该依赖项添加到版本控制之下的文件夹,并从该位置引用该程序集。
在项目中添加程序集引用。必须在
Visual Studio 项目中添加对该程序集的引用,然后才能使用该程序集。
使用正确的设置更新
web.config。这可能意味着您要使用 Bing 或 Google 进行更多搜索才能找到配置文件所需的正确设置。
真是很麻烦!现在,假设您必须为
10 至 15 个依赖项执行这些操作。当您的应用程序要发布新版本时,您需要花费大量时间为应用程序的依赖项搜索更新。
“非我发明”(NIH) 过去常常遭到非议,而在现在听起来却是不错的主意。
NuGet 应运而生
NuGet 是一种 Visual Studio 扩展,它能够简化在 Visual Studio 项目中添加、更新和删除库(部署为程序包)的操作。NuGet
程序包是打包成一个文件的文件集,扩展名是 .nupkg,使用开放打包约定 (OPC) 格式。
OPC 仅仅是具有某些元数据的 zip 文件的首字母缩写词。事实上,您可能早已熟悉
OPC,因为 Word 和 Excel 文档正是使用此格式。如果您取一个 .docx 文件并将文件扩展名改为 .zip,您实际可以打开它并浏览里面的内容。.nupkg
文件同样如此。
NuGet 产品同样随附能够轻松创建和发布程序包的实用工具。现在,我先重点介绍如何使用
NuGet 发现和安装程序包。之后,我将讲述如何创建和发布程序包。
安装 NuGet
要安装 NuGet,从“Tools”(工具)|“Extension Manager”(扩展管理器)菜单选项启动 Visual Studio Extension Manager。单击“Online
Gallery”(联机库)选项卡查看可用的 Visual Studio 扩展名,如图 1中所示。如您所见,NuGet
位于第一个屏幕,是排名最高的程序包。如果情况不是如此,您可以使用右上角的搜索框找到它。单击“Download”(下载)按钮安装
NuGet。
图 1:Visual Studio Extension Manager
如果您已经安装了 ASP.NET MVC 3,则您已经安装 NuGet。
