見出し画像

もう12年になるNugetのおさらい

この記事は、「meetup app osaka@6」勉強会で議論のネタ用に記載したnugetのおさらいと私の大好きな機能の紹介です。

1.Nugetとは

Microsoftがサポートする .NET Coreを含む.NET Frameworkのコード共有メカニズムです。コンパイル済みのコード(いわゆるdll)に加えて必要なコンテンツとマニフェストなど自分に必要な情報をまとめたものです[1]Nugetの概要
まとめたファイルは拡張子.nupkgですが、zip形式でまとめられているため、拡張子を.zipに変更すれば解凍して中身を見ることができます。nugetはこのパッケージのことであり、いわゆるパッケージマネージャーではありません。PowerShellやVisual Studioを使って使用・管理します。
2010年に登場以来、Microsoft系の開発をするにあたってなくてはならないおなじみのものになっています。

2. 主な機能

nugetのパッケージの主な機能として、必要ファイルをパッケージングすることですが、それに加えて自分自身に必要な依存関係にある他のソフトウェアを復元できる機能があります。このため、インストールされる初回実行時には依存関係の解決のため必要なパッケージのダウンロードとインストールが行われるので、時間がかかった経験をお持ちの方が多いのではないでしょうか。(プロキシ開け忘れてタイムアウト待ちとか^^;) 

また、nuget.orgといったパブリックのリポジトに加えて、プライベートリポジトリとして、自社運用のWebサイトやWindowsの共有フォルダに保管して配布することも可能です。Windowsの共有フォルダはあまり大量の同時アクセスに向いているとはいいがたいので、Webサイトに置くことをお勧めします。

3. いまさらだけど、一押しの機能

①ソースリンク機能
nugetには、ソースコードやデバッグに必要なシンボルファイルを含めることができ、これを利用者は解凍して確認することでソースコードを追いかけながらデバッグすることができます。それだけではなく、ソースリンク機能があります。
ソースリンク機能の面白いところは、GitHubやAzure DevOpsといったバージョン管理システムと連携し、リポジトリとコミットIDを含めることができ、デバック時にステップ実行しようとするとバージョン管理システムから自動でコミットIDに対応するソースコードを取得できる仕組みです[2]ソースリンク

②Automatic Pakage versioning
nugetには、ソースコードを含めくことができバージョンごとの依存関係も自動で解決してくれるということは、一度番号を割り当てたものについては変えてしまうと後から大混乱を招くため、同じバージョンで作ろうとするとエラーがでます。で、こちらの機能はAzure DevOpsでバージョンをを自動で更新してくれる機能です。CI/CDツールをうまく援用して楽ができるように設計されているのもnugetが好きなところです。

画像1

4. 最後に

ここ最近、MSさんがGitHubをお買い上げになってどんどん統合されて行っています[3]GitHub と Azure
結構な勢いで進歩していっています。何か面白い仕組みがございましたら是非ご一報ください。

この記事が気に入ったらサポートをしてみませんか?