如何在生产环境使用Nuget

关于Nuget http://nuget.org/

  官方提供的使用文档比较丰富 http://docs.nuget.org/

  要在实际生产环境使用它来做打包和包管理,比之更为成熟的Maven来说,从目前版本来看稍有不足,主要是以下几点:

  packages.config的继承和解决方案中的识别

  比如:

 
 
 
 
  1. nuget updatexx.sln2: nuget updatepackages.config

  它做的事只是对比包得版本是否有更新并更新之,只要版本没有变化,即使本地仓库没有这个包也不会去下载它,而

 
 
 
 
  1. nuget install packages.config

  只能指定具体的config文件,不能通过一个sln件自动去扫描解决方案里的所有packages.config

  和build的集成度:

  类似上面一点,build的时候不会对本地仓库不存在的必备依赖去自动获取

  nuget虽然提供 -build参数,但是仅是使用了MSBuild,本身的构建描述能力缺乏(所以下文在生产环境使用会搭配NANT来完成构建过程),而maven中则比较完整的集成了这个过程

  repository的安装位置不可配置:

  默认情况下package的安装目录是在.sln所在的目录下建立一个packages目录,也就是说是solutionfile级别的,这个对于项目数量多的时候是比较难接受的,本地开发还好,在build服务器构建的时候就比较麻烦了,不能再同一个位置管理包

  这个问题在它的官方已经有人在问了,估计下几个版本会有动作

  以下提供一些解决上述问题或实际应用时的一些方法

  下述范例所在目录结构:

  http://ops-base/feeds/是自己hosting的一个nuget feed(http://docs.nuget.org/docs/creating-packages/hosting-your-own-nuget-feeds)

  创建包描述文件:

 
 
 
 
  1. Package.Castle
  2.  2.1
  3. Castle
  4. Castle
  5. false
  6.  
  7. IOC容器
  8.  
  9.  2011
  10. zh-CN  
  11.  
  12.  
  13.  
  14.  
  15.  
  16.  
  17.  

  批量打包和发布到feeds,pack.bat脚本如下:

 
 
 
 
  1.  echo off
  2.  mkdir assemblypackages
  3.  echo pack
  4.  forfiles /p assembly /m *.nuspec /c "cmd /c .. ools uget pack @file-outputdirectory packages"
  5.  echo push
  6.  forfiles /p assemblypackages /m *.nupkg /c "cmd /c .... ools uget push @file-s http://ops-base/feeds/hello1234"
  7.  echo on

  批量安装和更新本地package,nuget.install.bat脚本如下:

 
 
 
 
  1. echo off
  2. echo install
  3. forfiles /s /m packages.config /c "cmd /c %1 uget install @file -o %2"
  4. echo update
  5. forfiles /s /m packages.config /c "cmd /c %1 uget update @file -source http://ops-base/feeds/nuget"
  6. echo on

  然后使用NANT然完成构建过程,nant.build部分内容如下:

 
 
 
 
  1.   
  2.  
  3.  
  4.  
  5.  
  6.  10: 
  7. value="/t:rebuild 
  8.  /p:Configuration=${msbuild.config}
  9. /p:AllowUnsafeBlocks=true
  10.  /t:ResolveReferences" />
  11.  
  12.  
  13.  commandline="${msbuild.params} ${msbuild.params.output}" workingdir="${dir}Infrastructure\"/>
  14.  
  15.  

  上述nant脚本中,target=base的构建目标就是要构建的项目了,首先执行nuget.install.bat脚本更新本地packages,然后执行msbuild

  然后运行下述脚本执行构建:

 
 
 
 
  1. . ools antin ant base

  到这里就完成了将nuget投入项目环境使用的相关准备工作:)

  作者:wsky (huangxu)

  出处:http://wsky.cnblogs.com/

文章标题:如何在生产环境使用Nuget
标题URL:http://www.hantingmc.com/qtweb/news21/317921.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联