CoreCLRでNugetからライブラリを取り込む方法
CoreCLRを使うことでLinux上で.NETプロジェクトを動かすことができるようになりました。
空のプロジェクトからシステムを組んでいくにあたりどうしてもNugetからライブラリが欲しかったりすると思います。
もしくは、Windowsで作っていたプロジェクトを移植するにあたりNugetのライブラリを既に使っていた場合も同様に、
Nuget経由でのライブラリ取得をしたい場合が出てくると思います。
CoreCLRの情報がまだまだ少ないので、自分で試してみたNuget経由でのライブラリ取得方法をご紹介したいと思います。
紹介と言っても、やっているので設定ファイルを変更してコマンドをひとつ叩くだけですが。。
設定ファイルの変更
CoreCLRの設定ファイルといえば project.json ファイルです。
このファイルはCoreCLRプロジェクトに関わる設定が書かれています。
CoreCLRバージョンの指定や、依存関係、フレームワークなどを指定できます。
今回は試しに Newtonsoft.JSON の 9.0.1 をNugetで取得する記述を追加してみます。
変更前
{ "version": "1.0.0-*", "buildOptions": { "emitEntryPoint": true }, "dependencies": { "Microsoft.NETCore.App": { "type": "platform", "version": "1.0.0-rc2-3002702" } }, "frameworks": { "netcoreapp1.0": { "imports": "dnxcore50" } } }
変更後
{ "version": "1.0.0-*", "buildOptions": { "emitEntryPoint": true }, "dependencies": { "Microsoft.NETCore.App": { "type": "platform", "version": "1.0.0-rc2-3002702" }, "Newtonsoft.Json": "9.0.1" // この行を追加 }, "frameworks": { "netcoreapp1.0": { "imports": "dnxcore50" } } }
Nugetからの取得
実際にライブラリを取得するには、プロジェクト作成時にも行ったであろう
dotnet restore コマンドを再度実行します。
すると下記のような感じで取り込まれます。
$ dotnet restore log : Restoring packages for /root/project.json... info : GET https://api.nuget.org/v3-flatcontainer/microsoft.netcore.dotnethostresolver/index.json info : GET https://api.nuget.org/v3-flatcontainer/newtonsoft.json/index.json info : OK https://api.nuget.org/v3-flatcontainer/microsoft.netcore.dotnethostresolver/index.json 673ms info : OK https://api.nuget.org/v3-flatcontainer/newtonsoft.json/index.json 678ms // Newtonsoft info : GET https://api.nuget.org/v3-flatcontainer/microsoft.netcore.dotnethost/index.json info : GET https://api.nuget.org/v3-flatcontainer/newtonsoft.json/9.0.1/newtonsoft.json.9.0.1.nupkg info : OK https://api.nuget.org/v3-flatcontainer/newtonsoft.json/9.0.1/newtonsoft.json.9.0.1.nupkg 172ms info : OK https://api.nuget.org/v3-flatcontainer/microsoft.netcore.dotnethost/index.json 664ms log : Installing Newtonsoft.Json 9.0.1. // Newtonsoft info : Committing restore... log : Writing lock file to disk. Path: /root/project.lock.json log : /root/project.json log : Restore completed in 2970ms. NuGet Config files used: /root/.nuget/NuGet/NuGet.Config Feeds used: https://api.nuget.org/v3/index.json Installed: 1 package(s) to /root/project.json
最後に
まだ実際に使えるかどうかまでは試していませんが、ひとまず取り込むことはできました。
これがうまく使えるようになるといろいろなライブラリが自由に使えるようになるので、
スムーズな開発を行うことができるようになりそうです。
※追記
実際に動くかどうか、簡単ですが試してみました。
kabatin.hateblo.jp