🔰 はじめに
通常、nuget パッケージを管理する場合には nuget.org を利用するか nuget サーバを作成して管理することが多いと思います。
ただ、小規模な企業や事務の方々にはなかなかにハードルが高いと思います。
これは技術的な話だけではなく、コンプライアンスやインフラ導入までの手続き的な意味も含めてです。
そこで今回はオープンな場での nuget パッケージの管理は禁止されており、なおかつ nuget サーバを独自で導入するのも難しい方向けのソリューションを紹介します。
🚨 注意事項
今回紹介する方法では共有フォルダにアクセスできる人間であれば誰でも自由に nuget パッケージを追加・編集・削除できてしまうので注意が必要です。
気休め程度ですが隠しフォルダにするなどの対応や、アクセス権限をいじれるのであれば適切なアクセス権限の付与を行うなどの対策が必要です。
あくまでも本来やらねばならないことをすっ飛ばして簡易的に nuget パッケージを管理したい場合の代替案だということは胸に深く刻んでおきましょう。
📖 How To
1. nuget パッケージを作成する
何はともあれ、管理したいライブラリがなければ話は進まないため、簡単なライブラリを用意していきます。
.NET Core を利用している場合は非常に簡単に dll プロジェクトから nuget パッケージを作成することができます。
a. dll プロジェクトを作成
まずは適当な位置にプロジェクトを作成します。
今回は F# でサンプルを作成していますが C# でもまったく同じ方法で実現可能です。
dotnet new classlib -lang="F#" -o="SampleProject"
今回はライブラリの中身にあまり興味がないため、デフォルトのまま進めます。
b. nuget パッケージを作成
通常の dll を作成する場合は dotnet build
コマンドを使って
dotnet build -c="Release"
とするだけで作成できます。
nuget パッケージを作成する場合には dotnet pack
コマンドを使って
dotnet pack -c="Release"
とすれば簡単に作成することができます。
作成された nuget パッケージは .nupkg
という拡張子で Relase フォルダに出力されます(デフォルトの場合)。
dotnet pack
コマンドには他にもいろいろなオプション機能があるので 公式HP を参考にカスタマイズしてみてください。
2. nuget パッケージ管理用のフォルダを用意する
それでは作成した nuget パッケージを管理するためのフォルダを用意します。
と、いっても共有フォルダ上に1つフォルダを作成するだけなので、なんてことない作業です。
今回は 共有フォルダを用意するのが面倒だったので Dドライブ直下にフォルダを用意しています。
mkdir D:/nuget
フォルダ名は nuget としましたが、別になんでも問題ありません。
フォルダを作成したら、ココに nuget パッケージを移動します。
以下のようになっていれば OK です。
3. dotnet コマンドが管理用フォルダを参照できるようにする
現状のままでは dotnet コマンドが nuget パッケージ管理用フォルダを参照してくれていないので、参照してくれるように設定をしていきます。
設定には dotnet nuget add source
を利用します。
# dotnet nuget add source <nuget パッケージ管理用フォルダのパス> -n <リソースの名称>
dotnet nuget add source "D:\\nuget" -n "Local Nuget Resources"
本当に追加されたかは dotnet nuget list source
コマンドで確認することができます。
これで dotnet コマンドを利用して nuget 管理用フォルダで管理している nuget パッケージを追加することができるようになりました。
4. nuget 管理用フォルダ内のパッケージを利用してみる
それでは簡単なコンソールアプリを作成して、先ほど作ったサンプルライブラリのパッケージを利用してみましょう。
パッケージの追加は dotnet add package
コマンドを利用します。
# コンソールアプリのプロジェクトを作成
dotnet new console -lang="F#" -o="SmpleConsole"
# カレントディレクトリを SampleProject にする
cd "./SampleProject"
# nuget パッケージをプロジェクトに追加する
dotnet add package SampleProject
# VS Code で開く
code .
上記のコマンドを順次実行するだけで準備は完了です。
Program.fs
を以下のように修正して実行してみましょう。
// さきほど作成した SampleProject を open できるようになっている
open SampleProject
"Midoliy"
|> Say.hello
# dotnet run コマンドを利用して実行
dotnet run
これで簡単に nuget パッケージが管理できるようになりました。
5. nuget パッケージがバージョンアップした場合に更新する
a. nuget パッケージのバージョンを上げる
それでは nuget パッケージのバージョンを上げてみましょう。
- で作成した SampleProject のバージョンを 2.0.0 に上げてみます。
以下のように <Version></Version> 要素を追加します。
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net5.0</TargetFramework>
<Version>2.0.0</Version>
</PropertyGroup>
<ItemGroup>
<Compile Include="Library.fs" />
</ItemGroup>
</Project>
あとは同じ手順で nuget パッケージを作成し、nuget パッケージ管理用フォルダに移動させます。
以下のような形になっていれば正解です。
b. コンソールアプリで参照している nuget パッケージのバージョンを更新する
次に 4. で作成したコンソールアプリの方を更新します。
更新方法は簡単で、もう一度 dotnet add package SampleProject
を実行するだけです。
# カレントディレクトリを SampleProject にする
cd "./SampleProject"
# nuget パッケージをプロジェクトに追加する
dotnet add package SampleProject
💡おわりに
今回は dotnet コマンドを利用して、環境によらない方法での紹介としましたが Visual Studio を利用できる環境であればさらに簡単に済ませることができます。
こういったケースで困ることはあまりないと思いますが、何かしらの一助になれば幸いです。