読者です 読者をやめる 読者になる 読者になる

Try .NET Core

.NET Coreを動かした、試した記録を書き残します。

ASP.NET Coreに、手持ちのライブラリを参照させる(2)

前回で、.NET Standardプロジェクトの参照が出来ました。
このプロジェクトが吐き出す dll をNuGetパッケージ化すれば、ソースでなくバイナリの参照が出来るはずです。
今回は、パッケージ管理ツールの使い方をなぞっていきます。

ローカル用NuGetパッケージを作る

私の手持ちライブラリを、.NET Standard1.1バイナリを作るよう書き換えました。
これで作った dll を使い、ローカルで使うNuGetパッケージを作ってみます。

こちらの記載にあるNuGet Package Explorerを使います。
バイナリの配布場所は見当たりませんでしたので、GitHubからソースを頂いて Visual Studio でビルドし、exe を作ります。

起動すると、こんな感じ。
f:id:try_dot_net_core:20161211003019j:plain

3段目「Create a new package」を選ぶと、プレーンな新規データが表示されます。
f:id:try_dot_net_core:20161211003343j:plain

まずは左ペインです。
パッケージの名称やバージョン、依存関係を書き込んでいきます。
左上のメモ帳っぽいアイコンをクリックすると、編集/表示が切り替わります。
ローカル使用時に必要なのは上端のID,バージョン、画面下部の依存関係です。
なおID項目は、公開されているNuGetパッケージと重複するものを避けてください。 依存解決時に、意図しないパッケージ情報を参照してしまう現象がありました。 f:id:try_dot_net_core:20161211005920j:plain

依存関係は、下端部「Edit dependencies」から出てくる画面で編集します。
f:id:try_dot_net_core:20161211010612j:plain

.NET Standardプロジェクトの依存ライブラリは、project.jsonファイルに書かれています。

{
  "supports": {},
  "dependencies": {
    "Microsoft.NETCore.Portable.Compatibility": "1.0.1",
    "NETStandard.Library": "1.6.0",
    "System.Net.Requests": "4.3.0",
    "System.Xml.XmlSerializer": "4.3.0"
  },
  "frameworks": {
    "netstandard1.1": {}
  }
}

ライブラリリスト下端左ボタンからライブラリ検索画面を開き、名称で絞り込んで選びながら追加していきます。
f:id:try_dot_net_core:20161211010958j:plain

Target framework項目は、半角スペースとバージョンの小数点を消し、.NETStandard11とするようです。
この項目の名称ルールは、何だか良くわかりません。
前回調べたJson.NETNewtonsoft.Json.nuspecファイル記述からコピペしました。
画面上の末尾小数点は消えてしまいますが、生成されるパッケージの定義ファイルには書き込まれています。
上のjsonにある依存ライブラリを全部書き込むと、下記のようになります。
f:id:try_dot_net_core:20161211011650j:plain

左ペインが完成すると、こんな感じ。
f:id:try_dot_net_core:20161211011827j:plain

次は右ペインです。
右側の空白箇所を右クリックすると、追加するフォルダリストが出てきます。
ルートにLibフォルダを追加します。
f:id:try_dot_net_core:20161211012341j:plain

libを右クリックし、.NET Standard1.1用のフォルダを作ります。
f:id:try_dot_net_core:20161211012554j:plain

Visual Studioでビルドした dll を、.NET Standard1.1用フォルダに配置します。 f:id:try_dot_net_core:20161211013906j:plain

これで、パッケージ作成準備完了です。
f:id:try_dot_net_core:20161211013210j:plain

あとは保存すれば、
f:id:try_dot_net_core:20161211014318j:plain

任意の場所にNuGetパッケージファイルが作られます。
f:id:try_dot_net_core:20161211094833j:plain

作られたNuGetパッケージファイルを、社内の共有フォルダに置いておけば、
複数人が参照するライブラリをNuGetで管理できるようになりますね。



参考:
Nugetの使い方とパッケージの作り方 - Qiita
GitHub - NuGetPackageExplorer/NuGetPackageExplorer: The new home for NuGetPackageExplorer (moved from https://npe.codeplex.com)


ローカルのNuGetフォルダからインストールする

次は、上で作ったNuGetパッケージを読み込む側の操作です。
ソリューションエクスプローラ上のプロジェクトを右クリック→「NuGetパッケージの管理」を選びます。 f:id:try_dot_net_core:20161211112257j:plain

まず、上で作った自作NuGetパッケージを置いてあるソースフォルダを指定します。
画面右上、パッケージソース右側の歯車をクリック、ソース編集画面を開きます。
f:id:try_dot_net_core:20161211112513j:plain

右上の「+」ボタンでパッケージソース行を追加し、名前とソースパスを書き込みます。
f:id:try_dot_net_core:20161211112813j:plain

ソース編集を終えて戻てくると、NuGetのパッケージソースドロップダウンから、 先ほど追加したものが選択できるようになります。
f:id:try_dot_net_core:20161211113135j:plain

中央上の[参照][インストール済み][更新プログラム]は、フィルタになっています。
[参照]を選ぶと、上で作ったパッケージがリストに表示されます。
f:id:try_dot_net_core:20161211113504j:plain

選択してインストールボタンをクリックすると、取り込んでくれます。
f:id:try_dot_net_core:20161211125922j:plain

参照項目に追加され、使えるようになりました!
f:id:try_dot_net_core:20161211130332j:plain