如何架設企業內部的 NuGet Server ?
.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

- 選擇
Web - 選擇
ASP.NET Web Application(不是 ASP.NET Core) - Name:輸入 project 名稱
- Framework:注意是
.NET Framework 4.6,不是 .NET Core - 按
OK繼續

- 選擇
Empty,其餘什麼都不用勾選 - 按
OK繼續
安裝 NuGet.Server Package

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

- 輸入
NuGet.Server - 選擇
NuGet.Server - 勾選
NuGetServerproject - 按
Install開始安裝 package

- 按
OK繼續

- 按
I Accept繼續

NuGet.Serverpackage 安裝完成
編輯 Web.config

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

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

- 按熱鍵
Alt + Shift + RStart 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 網址

目前為止,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 上