可惜目前只有 .NET Framework 版本

.NET Core 目前仍延續 .NET Framework 使用 NuGet 為 package,除了使用公用的 NuGet server 外,企業也需要自己內部使用 NuGet server。

NuGet Foundation 提供了 NuGet.Server 免費使用,但目前只有 .NET Framework 版本,因此還是只能安裝在 Windows Server 上。

Version


macOS High Sierra 10.13.4
Parallel Desktop 13 for Mac Pro Edition 13.3.1 (43365)
Windows 10 Pro 1803 17134.81
Visual Studio Enterprise 2017 15.7.3
NuGet.Server 3.1.2
.NET Framework 4.6.1
.NET Core 2.1

建立 NuGet Server


NuGet.Server 已經被封裝的 NuGet package,只要建立 ASP.NET MVC Application,並且加入 NuGet.Server package,不用寫任何一行 code,編譯後就是可用的 NuGet server。

建立 ASP.NET Web Application


nuget000

  1. 選擇 Web
  2. 選擇 ASP.NET Web Application (不是 ASP.NET Core)
  3. Name:輸入 project 名稱
  4. Framework:注意是 .NET Framework 4.6,不是 .NET Core
  5. OK 繼續

nuget001

  1. 選擇 Empty ,其餘什麼都不用勾選
  2. OK 繼續

安裝 NuGet.Server Package


nuget002

Tools -> NuGet Package Manager -> Manage NuGet Package for Solution

nuget003

  1. 輸入 NuGet.Server
  2. 選擇 NuGet.Server
  3. 勾選 NuGetServer project
  4. Install 開始安裝 package

nuget004

  1. OK 繼續

nuget005

  1. I Accept 繼續

nuget006

  1. NuGet.Server package 安裝完成

編輯 Web.config


nuget007

  1. 將 18 行的 <compilation debug="true" targetFramework="4.6" /> 刪除,這算是 bug,重複兩個相同的 targetFramework 會無法執行

設定 API Key


nuget009

  1. 當使用 dotnet nuget push 上傳時,會需要指定 API Key,可在 Web.config 內設定。

測試 NuGet Server


nuget008

  1. 按熱鍵 Alt + Shift + R Start Without Debug,此時會啟動 IIS Express 執行
1
$ dotnet nuget push MyClassLib.1.0.0.nupkg -k 12345 -s http://localhost:49771/nuget

使用 .NET Core CLI 的 dotnet nuget push.nupkg 上傳到 NuGet server。

  • -k : 指定 API Key
  • -s : 指定 NuGet server 網址

nuget010

目前為止,NuGet.Server 已經正常啟動,也可接受 dotnet nuget push.nupkg 上傳到 NuGet server,但 IIS Express 會動態選擇 port,只適合開發測試用,最後還是得將 NuGet.Server 安裝到 IIS 上。

Conclusion


  • 目前 NuGet.Server 還沒有 .NET Core 版本,這也意味著若使用 NuGet.Server,只能搭配 .NET Framework,也就是只能用於 Windows Server,還無法跨平台裝在 Linux 上

Reference


Poy Chang, 架設私有的 NuGet 伺服器