51Testing软件测试论坛
标题:
【过程改进】10分钟进阶Nuget
[打印本页]
作者:
always_fly
时间:
2018-4-28 15:14
标题:
【过程改进】10分钟进阶Nuget
nuget是什么
.net版的maven(java)? 如果你用过windows的chocolatey,mac的homebrew或许更容易理解他,先来回
顾下以前我们是如何处理或者碰到过的问题。
1.假如我需要合并2个项目,这2个项目是不同的作者,项目中都使用到了log4net并且版本不同,那么你需要
做一系列的改动来保证配置文件的正常工作。
2.同样在团队合作中,随便使用某个源代码管理工具,一般每个人在本地都有一个工程副本,对于第三方的(或
者公用的)程序集(例如Common,Utility等)引用或许大家会指定一个相对的路径。但是对于一次版本更新维护
成本,或许也能接受。
3.项目依赖问题,如果组件A依赖组件B,组件B关联组件C... 如果工程不是自己从头开始掌控或者直接就是修
改前任的代码,某些组件莫名丢了或者其中的一个版本升级了....
4.在.net工程中添加js或者程序集有时候所需要的安装工作可能不仅仅是copy一个js或者js,还需要关联的js,
css,jpg,config有的甚至要添加module和handler,在人为的操作和确认过程中难免会遇到一些磕磕绊绊。
所以nuget诞生了
nuget能做什么
NuGet 是一种 Visual Studio 扩展,它能够简化在 Visual Studio 项目中添加、更新和删除库(部署为程序包)
的操作。 NuGet 程序包是打包成一个文件的文件集,扩展名是 . nupkg,使用开放打包约定 (OPC) 格式。解决
上述的问题,nuget对于版本的更新迭代,程序集的共享,管理都有着巨大的作用,如果你还在徒手添加程序
库,你,out了!
安装,引用,卸载,更新
最简单的方法是从“Tools”(工具)|“Extension Manager”(vs2013中是Extensions and Updates)菜单选
项启动 Visual Studio Extension Manager。 单击“Online Gallery”(联机库)选项卡查看可用的 Visual Studio 扩
展名
[attach]114787[/attach]
需要引用库的时候,只要筛选出库的名称然后点安装,会提示你选择需要安装的项目
[attach]114788[/attach]
卸载同样简单,在已安装中选中需要卸载的库点击管理,去掉已安装项目的勾选即成。
[attach]114789[/attach]
如果要更新到最新版本,在扩展包管理器窗口中有需要更新的一览列表
[attach]114790[/attach]
如果要更新到指定版本,需要多一些其他的操作,首先找到nuget的官方网站
http://www.nuget.org/
,筛
选出要安装的库
[attach]114791[/attach]
这里我们选择log4net
[attach]114792[/attach]
历史版本变全在这里了。
回到Visual Studio从tools中打开包管理器
[attach]114793[/attach]
键入指定的版本号,注意要安装的默认项目
[attach]114794[/attach]
至此,对nuget应该已经有了初步的了解
[attach]114795[/attach]
下面我们来看下如何管理本地的包
首先从tools|Options中选中包管理,除了第一个官方源以外下面都是可以自定义的。如果是团队项目还可以
指向一个共享目录。
[attach]114796[/attach]
那么如何制作我们本地的包呢,首先你要准备nuget package explorer
[attach]114797[/attach]
拖入你要管理或者共享的库
[attach]114798[/attach]
、
保存成.nupkg即可。另外引用nuget管理的工程在根目录下都会存在一份配置文件packages.config,里面可
以看出所引用的包的信息以及版本。
[attach]114799[/attach]
还有一种特殊的情况就是假如你做开源项目的扩展,例如umbraco,它们有时候会引用一些更改过的无
签名或者公钥的组件。这个时候如果你从官方源中引用对应的组件会导致冲突。
[attach]114800[/attach]
这里使用ildasm来查看下区别
[attach]114801[/attach]
对于这种情况,解决办法之一就是建立一个适配器一样的中间件,也就是用本地包包含一个对应的无公
钥的库。
[attach]114802[/attach]
最近会更新一些过程改进的内容,希望对大家有帮助。
欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/)
Powered by Discuz! X3.2