Ubuntu上で.NET Coreを使うのだけど、ilasmが使えないないのでCoreCLRをビルドした。
趣味のコンパイラを自作するのにilasmを使ってたが、これを.NET Core/Ubuntuで動かそうと思った。
→ CIL(MSIL)中間コードを生成するTiny BASICコンパイラを作ってみた
Ubuntuで.NET Core(バージョン1.1)を使う方法は、公式(英語)の手順が出ている。
→ https://www.microsoft.com/net/core#linuxubuntu
手順どおりインストールをすると、dotnetというコマンドが使えるようになる。
dotnet newというコマンドで新規プロジェクトを作成。
dotnet restoreというコマンドで、プロジェクトに必要なファイルの生成(?)
dotnet buildというコマンドで、ビルド。
dotnet runというコマンドで、実行。(buildを省略した場合、自動でビルドも行われる)
というのが基本的な使い方だ。
プロジェクトのソースコードは、C#で記述する。
Program.csというソースコードを書いてテストしてみた。
C#のソフトは無事にビルドでき、実行することができた。
実は.NET CoreはF#言語にも対応している。
dotnet newコマンドで、オプション –lang F# というのを付けると、F#のプロジェクトを作ることができるらしい。
あと、他に隠しコマンドで直接コンパイラを起動することができるようだ。
dotnet compile-csc source.cs とすると、ソースコードsource.csをC#コンパイラでコンパイルすることができる。
同様に、
dotnet compile-fsc source.fs とすると、ソースコードsource.fsをF#コンパイラでコンパイルすることができるようだ。
では、ILアセンブラ(ilasm)はdotnetコマンドから使うことができないのだろうか?
調べてみたり、英語で問い合わせメールを書いてみたが、使うことができないらしい。
ilasmはNuGetのパッケージに含まれているみたいなのだけど、UbuntuからNuGetを使うのが分からない。
→ NuGet Gallery Microsoft.NETCore.ILAsm 1.1.0
CoreCLRのソースコードには含まれているようなので、結局CoreCLRをソースコードでダウンロードして、自前でビルドしてインストールし、ilasmをUbuntuで使えるようにできた。
→ Ubuntu上で.NET CoreのCoreCLRをビルドしてみた
—
追記
昔の.NET Core(バージョン1.0)とは使い方が違うみたいだ。
・Ubuntuに、.Net Coreをインストールした備忘録 – Qiita
昔はmonoで足りない部分を補って、mono+coreclrで動かしていたのだろうか?