关于Nuget http://nuget.org/
官方提供的使用文档比较丰富 http://docs.nuget.org/
要在实际生产环境使用它来做打包和包管理,比之更为成熟的Maven来说,从目前版本来看稍有不足,主要是以下几点:
packages.config的继承和解决方案中的识别
比如:
- nuget updatexx.sln2: nuget updatepackages.config
它做的事只是对比包得版本是否有更新并更新之,只要版本没有变化,即使本地仓库没有这个包也不会去下载它,而
- 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)
创建包描述文件:
Package.Castle 2.1 Castle Castle false - IOC容器
2011 zh-CN
批量打包和发布到feeds,pack.bat脚本如下:
- echo off
- mkdir assemblypackages
- echo pack
- forfiles /p assembly /m *.nuspec /c "cmd /c .. ools uget pack @file-outputdirectory packages"
- echo push
- forfiles /p assemblypackages /m *.nupkg /c "cmd /c .... ools uget push @file-s http://ops-base/feeds/hello1234"
- echo on
批量安装和更新本地package,nuget.install.bat脚本如下:
- echo off
- echo install
- forfiles /s /m packages.config /c "cmd /c %1 uget install @file -o %2"
- echo update
- forfiles /s /m packages.config /c "cmd /c %1 uget update @file -source http://ops-base/feeds/nuget"
- echo on
然后使用NANT然完成构建过程,nant.build部分内容如下:
- 10:
- value="/t:rebuild
- /p:Configuration=${msbuild.config}
- /p:AllowUnsafeBlocks=true
- /t:ResolveReferences" />
- commandline="${msbuild.params} ${msbuild.params.output}" workingdir="${dir}Infrastructure\"/>
上述nant脚本中,target=base的构建目标就是要构建的项目了,首先执行nuget.install.bat脚本更新本地packages,然后执行msbuild
然后运行下述脚本执行构建:
- . ools antin ant base
到这里就完成了将nuget投入项目环境使用的相关准备工作:)
作者:wsky (huangxu)
出处:http://wsky.cnblogs.com/
网页名称:如何在生产环境使用Nuget
本文地址:http://www.csdahua.cn/qtweb/news21/317921.html
网站建设、网络推广公司-快上网,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 快上网