圖解搭建公司內部的NuGet?

隨著公司業務慢慢的拓展,專案便會越來越來多,很多專案會依賴其他專案DLL,比如一些底層的技術框架DLL引用,還有各業務系統的也有可能會有引用的可能。

專案多,交叉引用多,如果要是有一個DLL更新,那就要更新所有引用該DLL的專案,手動更新的話,有時候找到都很困難,更別說更新了,長此以往,更新DLL會變得很困難,那有什麼辦法來解決這個問題 ?

對NuGet,話說微軟真是為廣大使用者著想,整出這麼個好東西。我估計微軟內部DLL也亂得不像樣子,然後才有NuGet 這個產物。NuGet 管理程式包工具,Visual Studio 2012&2013 完全集成了這套工具。

但是今天講的是如何在公司內部搭建NuGet Server,來管理公司內部程式包。使內部程式包引用容易,更新版本容易。廢話就不多說了,直接入正題。

搭建NuGet Server 是不是建一個Web站點一樣,然後掛在IIS上面? 對的,就是這麼回事,建一個網站,管理程式包,能夠上傳,能夠下載,且能夠做簡單版本管理。

我要說的是,站點確實要建,但是怎麼管理程式包,上傳,下載也好等,大家不要擔心這些都有人已經做好了,只要拿來使用就可以了。接下來搞真的了。

NuGetServer 搭建和配置

建立一個 “NuGetServerSolution” 解決方案,然後新增 “NuGetServer” Asp.Net 網站 或者 應用程式 空 專案。結構如下圖所示:

圖解搭建公司內部的NuGet Server

在 “NuGetServer” 專案上,右鍵選擇 “管理NuGet程式包” ,選擇 “聯機” ,右上角搜尋框中輸入“NuGet.Server” Enter,在搜尋結果中選擇 NuGet.Server 項,進行安裝,如下圖所示:

注意:如果安裝最後,提示 替換 Web.config ,請選擇“全是”。

圖解搭建公司內部的NuGet Server

編譯“NuGetServer”專案,如果沒有出異常,這裡就建立專案完成,NuGetServer 就這麼簡單建成,稍後我部署到IIS上面,看看是不是真的可以了,先來講一下這個網站WebConfig 要配置地方。

第一點: 程式包釋出,存放的路徑,在WebConfig appSettings PackagesPath 這個Key 設定,預設存放在部署的網站根目錄Packages資料夾。

第二點:appSettings requireApiKey 這個key 如果設定成 true , appSettings apiKey 是必須要設定的,這個就像密碼一樣。可以阻止不知道這個apiKey人訪問到程式包

部署到IIS, 開啟IIS ,右鍵選擇 “網站” ,新增網站,填寫 網站名稱(NuGetServer),選擇物理路徑,埠號 改成 "1000" 確定, 如下圖所示:

圖解搭建公司內部的NuGet Server

執行 NuGetServer 網站 ";, 出現下圖效果,則說NuGet 伺服器 已經建立完成。

圖解搭建公司內部的NuGet Server

接著配置Visual Studio 連線 NuGetServer。選擇“工具”選單,選擇“選項”,彈出“選項”介面,選擇 “NuGet Package Manager” ,然後在選擇 “程式包源”,

點選 “+”,在介面下方 設定 名稱 “mynuget.org” 隨便取,設定 源 “ (是不是上圖有說),確定 關閉介面,回到專案。如下圖

圖解搭建公司內部的NuGet Server

在專案右鍵,選擇“管理NuGet程式包”,聯機,下面是不是多出了一個 “mynuget.org” 程式源呢,雖然下面還沒有釋出公司內部的程式包。如下圖所示:

圖解搭建公司內部的NuGet Server

到此,NuGetServer 伺服器,就搭建並配置完成。接一下來就是如何釋出程式包,以及安裝程式包了。

釋出程式包,以及安裝程式包

NuGet Package Explorer

將程式包釋出到NuGetServer,還要介紹到另外一個工具“NuGet Package Explorer”,這個工具是NuGetServer 程式包一個視覺化的工具,它功能很多,可瀏覽已經發布的程式包資訊,可以釋出新的程式包(設定程式包版本,已經依賴程式包等),可以刪除釋出的程式包。

CodePlex:https://npe.codeplex.com/

GitHub:https://github.com/NuGetPackageExplorer

在CodePlex 網站上,下載 NuGet Package Explorer , 安裝完成後,桌面會多出一個 “NuGet Package Explorer” 圖示,如下圖所示:

圖解搭建公司內部的NuGet Server

為了方便Demo,再建立一個 解決方案 “NuGetServerDemoSolution”,新增“NuGetServerDemo” 控制檯專案,再新增 “NuGetServerDemoDLL” 類庫專案,結構如下圖所示:

“NuGetServerDemoDLL” 專案 主要會做成程式包釋出

“NuGetServerDemo” 專案 安裝“NuGetServerDemoDLL” 程式包

圖解搭建公司內部的NuGet Server

開啟 桌面 “NuGet Package Explorer” ,介面如下圖所示:

圖片選項, 分別意思是:

1. 開啟本地的nupkg,nuspec 檔案。

2. 開啟指定 NuGetServer 所有的程式包列表。

3.建立一個新程式包。

4. 文件

圖解搭建公司內部的NuGet Server

把 “NuGetServerDemoDLL” 釋出到NuGetServer,點 “Create a new package” 未設定前截圖如下圖所示:

上圖分為兩個編輯區,一個是 Package Metadata 負責描述程式包資訊的,Package Contents 負責程式包檔案相關的。

點選 Package Metadata 區 “編輯” 按鈕,想編輯 “NuGetServerDemoDLL” 程式包描述資訊。

圖解搭建公司內部的NuGet Server

然後 將“NuGetServerDemoDLL” 專案 產生Dll,拖入 Package Contents 最後效果如下圖所示:

圖解搭建公司內部的NuGet Server

點選 上圖 綠色的 √ 關閉編輯Package Metadata , 點選 ”File“ 選單,選擇 Publish 釋出程式集,填寫 PublishUrl(NuGetServer),PublishKey(apiKey),填寫完成 點選“Publish” 釋出,如果下方提示 “Package published successfully”,則釋出成功。如下圖所示:

圖解搭建公司內部的NuGet Server

回到“NuGetServerDemoSolution” 解決方案,右鍵“NuGetServerDemo”,選擇“管理NuGet程式包”,選擇聯機下“mynuget.org”,安裝“NuGetServerDemoDLL” 程式包,如下圖所示:

主要看圖左邊的 ,是不是“NuGet Package Explorer” 中設定過的一些程式包資訊。

圖解搭建公司內部的NuGet Server

用“NuGet Package Explorer”檢視 NuGetServer 以釋出程式包,選擇“File”選單,選擇"Open from feed", 就會查詢到指定 NuGetServer 釋出程式包,如下圖所示:

圖解搭建公司內部的NuGet Server

相關問題答案