目錄
.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 擴展名
需要引用庫的時候,只要篩選出庫的名稱然后點安裝,會提示你選擇需要安裝的項目
卸載同樣簡單,在已安裝中選中需要卸載的庫點擊管理,去掉已安裝項目的勾選即成。
如果要更新到最新版本,在擴展包管理器窗口中有需要更新的一覽列表
如果要更新到指定版本,需要多一些其他的操作,首先找到nuget的官方網站http://www.nuget.org/,篩選出要安裝的庫
這里我們選擇log4net
歷史版本變全在這里了。
回到Visual Studio從tools中打開包管理器
鍵入指定的版本號,注意要安裝的默認項目
至此,對nuget應該已經有了初步的了解
首先從tools|Options中選中包管理,除了第一個官方源以外下面都是可以自定義的。如果是團隊項目還可以指向一個共享目錄。
那么如何制作我們本地的包呢,首先你要准備nuget package explorer
拖入你要管理或者共享的庫
、
保存成.nupkg即可。另外引用nuget管理的工程在根目錄下都會存在一份配置文件packages.config,里面可以看出所引用的包的信息以及版本。
還有一種特殊的情況就是假如你做開源項目的擴展,例如umbraco,它們有時候會引用一些更改過的無簽名或者公鑰的組件。這個時候如果你從官方源中引用對應的組件會導致沖突。
這里使用ildasm來查看下區別
對於這種情況,解決辦法之一就是建立一個適配器一樣的中間件,也就是用本地包包含一個對應的無公鑰的庫。
最近會更新一些過程改進的內容,希望對大家有幫助。