如何架設企業內部的 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
- 勾選
NuGetServer
project - 按
Install
開始安裝 package
- 按
OK
繼續
- 按
I Accept
繼續
NuGet.Server
package 安裝完成
編輯 Web.config
- 將 18 行的
<compilation debug="true" targetFramework="4.6" />
刪除,這算是 bug,重複兩個相同的targetFramework
會無法執行
設定 API Key
- 當使用
dotnet nuget push
上傳時,會需要指定 API Key,可在Web.config
內設定。
測試 NuGet Server
- 按熱鍵
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 網址
目前為止,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 上