NuGetについて
はじめに
C# や .NET 系の開発では、ライブラリを簡単に使えるようにする仕組みが整ってる。
その中心にあるのが NuGet(ニューゲットと読む)。
今回は、NuGet について解説していこう。
NuGet とは
NuGet は .NET 専用のパッケージ管理システム。
npm が JavaScript にあるように、.NET には NuGet がある。
パッケージは、nuget.orgという NuGet パッケージの公式レジストリサイトに配置されている。
パッケージをインストールするだけで中身を自由に使える。
中身は DLL や設定ファイルだったりする。
また、自作の便利なクラスや関数をまとめて「NuGet パッケージ」として公開できる。
パッケージにはバージョンがあり、アップデートもできるし、特定のバージョンを指定して使うこともできる。
つまり、依存関係の管理とかも勝手にやってくれる便利なヤツ。
パッケージのインストール方法
パッケージをインストールする際に、依存関係等を調べる必要がある。
開発する .NETのバージョンが対応できるか等々。
下記サイトに NuGet に上がっているパッケージ情報が記載されている。
Visual Studio
Visual Studio では GUI で簡単に入れられる。
プロジェクトを右クリック → 「NuGet パッケージの管理」から欲しいパッケージ名で検索して、「インストール」ボタンを押すだけ。
VS Code
VS Code は GUI がないから、基本はコマンドを使う。
.csproj を開いてるプロジェクトで、以下のコマンドを実行する。
dotnet add package パッケージ名
たとえば Dapper を入れたいなら:
dotnet add package Dapper
これだけで OK。.csproj に自動で書き込まれる。
dotnet コマンド
VS Code 以外でも、CLI(コマンドライン)から操作する場合は基本的に dotnet コマンドを使う。
-
パッケージを追加:
dotnet add package パッケージ名 -
パッケージ一覧を見る:
dotnet list package -
アップデート:
dotnet outdated(※別途ツールのインストールが必要)
おまけ NuGet の仕組み
NuGet を使うと、裏ではこんな感じの流れになってる:
-
検索&取得
下記のコマンドでパッケージ名を指定すると、NuGet サーバー(公式はhttps://api.nuget.org)に問い合わせがいく。dotnet add package Dapper -
ダウンロード
対象のパッケージが見つかると、.nupkgという ZIP 形式のファイルがダウンロードされる。 -
展開&参照
.nupkgの中には DLL やライセンスファイルなどが入ってる。プロジェクトのobjや ローカルキャッシュのpackagesフォルダなどに展開されて、プロジェクトの参照に組み込まれる。
ちなみに、一度インストールしたパッケージはローカルキャッシュ(~/.nuget/packages)に保存されるから、次からはネットに取りに行かずにローカルから使える。 -
管理
.csprojファイルには、追加されたパッケージ情報が<PackageReference>タグで記録される。
依存してる他のライブラリ(依存関係)も一緒に追加される。<ItemGroup> <PackageReference Include="Dapper" Version="2.1.66" /> </ItemGroup> -
ビルド
.csprojファイルから該当するパッケージの.dllがプロジェクトの出力先(bin/Debug/...)にコピーされる``` bin/Debug/net8.0/ ├── MyApp.dll ├── Dapper.dll ← NuGet パッケージからコピーされた DLL ├── ︙ ``` `.NET` のビルドについても書いているのでぜひ。
Discussion