C Sharpの基礎 - NuGet
概要
NuGetは.NET開発における重要なパッケージマネージャーシステムである。
これは、開発者がコードの再利用や共有を効率的に行えるようにする重要なツールとして機能している。
NuGetの基本的な仕組みとしては、開発者が作成したコードライブラリをパッケージとして公開して、他の開発者がそれを自分のプロジェクトで利用できるようにする仕組みを提供している。
パッケージには、コンパイル済みのライブラリファイル、ソースコード、設定ファイル、ドキュメント等が含まれる。
パッケージの管理方法として、Rider等のIDEには統合されたNuGetパッケージマネージャーUIが用意されている。
これを使用することにより、必要なパッケージの検索、インストール、更新、削除等の操作を行うことができる。
パッケージの依存関係管理では、あるパッケージが他のパッケージに依存している場合、NuGetは必要な依存関係を自動的に解決して必要なパッケージを全てインストールする。
これにより、開発者は複雑な依存関係を手動で管理する必要がなくなる。
バージョン管理においては、セマンティックバージョニング (SemVer) という規約に従っている。
これにより、メジャーバージョン (破壊的な変更)、マイナーバージョン (後方互換性のある機能追加)、パッチバージョン (バグ修正) を明確に区別することができる。
NuGetは署名されたパッケージをサポートしており、パッケージの作成者を確認して、パッケージの改竄を防ぐことができる。
また、脆弱性が発見された場合は、パッケージの更新を通じて修正を配布することができる。
プライベートパッケージの管理も可能で、組織内で独自のNuGetフィードを構築して、社内専用のパッケージを管理することができる。
これはAzure DevOpsやGitHub Packages等のサービスを利用して実現できる。
NuGetパッケージの自動復元
NuGetパッケージの自動復元の設定を行う方法は複数存在する。
この設定を行うことにより、プロジェクトをビルドする時に必要なNuGetパッケージが自動的にダウンロードされるようになる。
チーム開発の場合は、この設定をソース管理に含めることにより、全てのチームメンバーで同じ環境を共有できる。
Riderの設定で自動復元を有効にする方法
- Riderのメイン画面から、[ファイル]メインメニュー - [設定]メニューを選択する。
または、[Ctrl] + [Alt] + [S]キーを押下する。 - [設定]画面の左ペインから、[Build, Execution, Deployment] - [NuGet]を選択する。
- [必要な場合に欠落しているパッケージを自動復元する]プルダウンから[常に有効]を選択する。
プロジェクトファイル(.csproj)で設定する方法
<PropertyGroup>
<RestorePackagesWithLockFile>true</RestorePackagesWithLockFile>
<RestoreLockedMode>false</RestoreLockedMode>
<RestorePackagesOnBuild>true</RestorePackagesOnBuild>
</PropertyGroup>
ソリューションにNuGet.Configファイルを追加する方法
ソリューションにNuGet.Configファイルを追加することにより、パッケージソースやその他の設定をプロジェクト単位で管理することもできる。
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<packageRestore>
<add key="enabled" value="True" />
<add key="automatic" value="True" />
</packageRestore>
</configuration>