新聞中心
關(guān)于Nuget http://nuget.org/

官方提供的使用文檔比較豐富 http://docs.nuget.org/
要在實(shí)際生產(chǎn)環(huán)境使用它來做打包和包管理,比之更為成熟的Maven來說,從目前版本來看稍有不足,主要是以下幾點(diǎn):
packages.config的繼承和解決方案中的識(shí)別
比如:
- nuget updatexx.sln2: nuget updatepackages.config
它做的事只是對(duì)比包得版本是否有更新并更新之,只要版本沒有變化,即使本地倉庫沒有這個(gè)包也不會(huì)去下載它,而
- nuget install packages.config
只能指定具體的config文件,不能通過一個(gè)sln件自動(dòng)去掃描解決方案里的所有packages.config
和build的集成度:
類似上面一點(diǎn),build的時(shí)候不會(huì)對(duì)本地倉庫不存在的必備依賴去自動(dòng)獲取
nuget雖然提供 -build參數(shù),但是僅是使用了MSBuild,本身的構(gòu)建描述能力缺乏(所以下文在生產(chǎn)環(huán)境使用會(huì)搭配NANT來完成構(gòu)建過程),而maven中則比較完整的集成了這個(gè)過程
repository的安裝位置不可配置:
默認(rèn)情況下package的安裝目錄是在.sln所在的目錄下建立一個(gè)packages目錄,也就是說是solutionfile級(jí)別的,這個(gè)對(duì)于項(xiàng)目數(shù)量多的時(shí)候是比較難接受的,本地開發(fā)還好,在build服務(wù)器構(gòu)建的時(shí)候就比較麻煩了,不能再同一個(gè)位置管理包
這個(gè)問題在它的官方已經(jīng)有人在問了,估計(jì)下幾個(gè)版本會(huì)有動(dòng)作
以下提供一些解決上述問題或?qū)嶋H應(yīng)用時(shí)的一些方法
下述范例所在目錄結(jié)構(gòu):
http://ops-base/feeds/是自己hosting的一個(gè)nuget feed(http://docs.nuget.org/docs/creating-packages/hosting-your-own-nuget-feeds)
創(chuàng)建包描述文件:
Package.Castle 2.1 Castle Castle false - IOC容器
2011 zh-CN
批量打包和發(fā)布到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然完成構(gòu)建過程,nant.build部分內(nèi)容如下:
- 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的構(gòu)建目標(biāo)就是要構(gòu)建的項(xiàng)目了,首先執(zhí)行nuget.install.bat腳本更新本地packages,然后執(zhí)行msbuild
然后運(yùn)行下述腳本執(zhí)行構(gòu)建:
- . ools antin ant base
到這里就完成了將nuget投入項(xiàng)目環(huán)境使用的相關(guān)準(zhǔn)備工作:)
作者:wsky (huangxu)
出處:http://wsky.cnblogs.com/
名稱欄目:如何在生產(chǎn)環(huán)境使用Nuget
URL鏈接:http://m.5511xx.com/article/cdhscee.html


咨詢
建站咨詢
