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