由於工作專案越拆越多,有些專案參考來參考去很討厭。
開一個 Solution 包了好幾個 Project 再加上如果你裝了 Resharper 就會開始懷疑要不要換電腦了?
讓我們把一些共用且耦合性較低的東西包出去當作 Package 用 NuGet 去管理吧!
Private NuGet Server 架設有許多選擇 - Hosting your own NuGet feeds
最後選擇了 ProGet from Inedo,Free License 已經很夠用了。( License 比較 )
並且記錄下我在架設 Server 遇到的麻煩。
在安裝上我是參考以下兩篇文章。
下一步就是跟公司單位要 Server 與空間就可以開始架囉!
很不幸地要到了一個很詭異的配置 : C:\ 40GB D:\ 200GB。
在安裝完 ProGet 及設定完 NuGet Feed 後你會得到一個放置 package 位置。
雖然可以在設定內修改但是官方並不建議操作,因為它如果要整個系統備份移轉的時候會無法取得正確的 packages。
利用此指令去創建虛擬資料夾鏈接目錄。
這樣在上傳 packages 時可以不會去真的占用 C:\ 空間。
mklink /d C:\ProgramData\ProGet\Packages\.nugetv2\F1 D:\ProgramData\ProGet\Packages\.nugetv2\F1
接下來要限制匿名使用者不能隨意地到我們架設好的 NuGet Server 下載 packages。
在 Tasks 中的 Add Permission 移除 Anonymous 加入一個群組或是使用者去限制身分。
並建立一個 API Keys 允許存取 Feed API。
在團隊開發中可能會將這個設定檔加入至版控中使大家儲存 packages 的位置一致。
當然我們也可以在當中去設置節點去讀取我們架設的私人 NuGet Server。
比較要注意的是 <apikeys> 內的 value 必須是加密後 與 <packageSourceCredentials> 的 Username/ClearTextPassword 不需要加密。
這樣團隊成員取最新後在 Visual Studio IDE 針對專案 Nuget Package Manager 應該就能正常訪問私人 NuGet Server 並可以下載 packages。
下一篇將會介紹如何將 Project pack (打包) / push (上傳) 整合至 CI Server 上做一個完整的自動化流程。