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