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