# NuGet

- [裝載您自己的 NuGet 摘要概觀 | Microsoft Learn](https://learn.microsoft.com/zh-tw/nuget/hosting-packages/overview)

NuGet Server

- [NuGet Server](https://nugetserver.net/)
- [Running a NuGet Server on Docker | dotnetthoughts](https://dotnetthoughts.net/running-a-nuget-server-on-docker/)

##### Porting NuGet Package

- [.NET Core NuGet Package Offline Restore(離線還原)](https://dotblogs.com.tw/LigiJog/2022/04/07/dotnet-restore-nuget-offline)
- [.NET Core NuGet Package Offline Restore(離線還原) - 續](https://dotblogs.com.tw/LigiJog/2022/04/16/dotnet-restore-nuget-offline-2)

NuGet Export

```bash
# 1. 確定 Internet 是可用的
# 2. 將目錄 packages 複製到離線的 dotnet 環境
cd <project-root>
mkdir packages
dotnet restore --packages ./packages
```

NuGet Import

- 因為是離線環境，建議關閉內建的 nuget.org
- 如果是複製整個 project 目錄至另一個離線環境，nuget package 只要做完 restore 就可以編譯/執行程式碼；假使不小心將 package 移除，也可以使用 `add package` 將它加回來。

```bash
# 不需要 Internet
cd <project-root>
tar xzf packages.tar.gz
dotnet restore -s ./packages

# 關閉內建的 nuget.org
dotnet nuget list source
dotnet nuget disable source "nuget.org"

# 離線安裝 package
# 必須指定原有的版本號
dotnet add package MySql.Data --version 8.0.32
```