Private Nuget Server

Private Nuget Server

Posted by BY Skyleaf on November 23, 2017

前言

Private Nuget Server。

图

Nuget Server 一般狀況介紹有兩種

  • NuGet Gallery (Public)
  • NuGet Server (Private)

操作須知

  1. 使用過Nuget
  2. Windows陣營
  3. 寫.Net Library
  4. 封裝
  5. 專案方法隔離
  6. 有效控管工具

操作想法

只要有新人來,第一件事就是跟她說怎樣抓專案,然後抓完後需要跟她特別交代,XXX專案要放哪,共用的dll在哪…等等。這很智障。會一直被白眼,巴拉巴拉你們還在用專案路徑做reference,相依性不會太高嗎? 是阿,這是實話,真的有點高。

被噹了好久,不過這也是會什麼公司程式碼一直沒人想竊取的原因!! 再強的高手沒有內部人員的導覽可建置不起來。不過高手寧願重新建置也不願拿Legency Code。回到原題,透過Nuget Package的方式我們可以下載別人做好的工具套件,相對可以使用自己建好的Library,封裝成Nuget Package,給大家用,但有些東西只有公司內部用,所以就會需要自建Private Server。

操作方法

  1. VS 2017 開專案,建立一個空的專案,去安裝Nuget.Server。安裝好後執行F5。

  2. 由於我的Default是4.6.1,所以我的targetFramework是4.6.1,但安裝完套件會綁你自動建立4.6。你必須手動刪除他。

alt

  1. 之後搭配忠成老師的BasicAuthHttpModule類別做驗證機制。帳密在程式碼內(user/password)。也可透過老師提供的語法新增修改。
    • 新增:
      • nuget sources add -Name "privateServer" -Source "http://localhost/nuget" -UserName "abc1" -Password "123"
    • 修改:
      • nuget sources update -Name "privateServer" -Source "http://localhost/nuget" -UserName "abc2" -Password "1234"
  2. 使用Nuget Package Exploer (NPE)工具去建置,可以使用choco安裝

     `choco install nugetpackageexplorer`
    
  3. 透過NPE加入dependencies在加入自己的library的dll,要套用到你.net建置的版本folder

alt

  1. 還可以使用unpkg檔案建立package的內容,icon等等。但有了NPE後對一般使用者來說比較直覺一點,這就看你自己了,這跟publish你可以使用Nuget.exe Publish一樣。都可以。
  • alt
  • alt
  1. 接著建立新的測試專案,去Nuget Manager加入新的Nuget Server位置

  2. 下載後即可使用。

實戰:遇到的一些問題

Q: 一直回傳回傳 500 錯誤?
A: 這篇,原來是folder的權限不足。

Q: publish 時候遇到406錯誤?
A: 這篇,sthkn commented on Dec 16, 2017說到只需要在Web.config 打開allowOverrideExistingPackageOnPush設定即可。

閒言閒語

  1. 要懂.Net
  2. 有想解決reference問題
  3. .Net Core之後都是採用Nuget方式,想提前熟悉
  4. 想節省新人培訓時間

來源

  1. 版控的下一步
  2. NPE
  3. Nuget.exe
  4. creating-a-package
  5. nugetexe-cli