北海道苫小牧市出身の初老PGが書くブログ

永遠のプログラマを夢見る、苫小牧市出身のおじさんのちらしの裏

.NETがむずかしい

MSのエコシステムがよくわからなくていろいろ調べている。調べたのはこんなところ。

  • .NET のランタイム環境は複数ある
  • mono はCLIで扱える ( mono コマンド)
  • .NET core はCLIで扱える( dotnet コマンド)
    • というか、それぞれにコンパイラとかツールセットが付いてるんだろうけど、環境によってコマンド名などは一緒なんだろうか?
  • Visual Studio では .NET Framework のアプリを作れる
    • そして .NET core も作れる
    • android とか ios とか unity とか、他にもいろいろ対応
  • Visual Studio for Mac は mono のアプリを主に作れる?
    • こちらも、他にもいろいろ対応している
  • Visual Studio Code は基本的にはテキストエディタ
    • dotnet コマンドを手で叩いてもいい(エディタ内でターミナルが開ける)
    • 拡張入れればいろいろしてくれる
    • VSもテキストエディタ的に使えるが、基本的には .NET Frameworkのアプリを、IDEが用意しているテンプレートから書いてく、という使い方がいい感じがする
  • ビルドすると .exe.dll ができるが、Macでは monodotnet コマンドでランタイム経由で実行する
  • プロジェクトはアセンブリ( .dll または .exe )と同じ粒度。それを、ソリューションでまとめてアプリとしてビルド
  • アセンブリは言語( C# F# に関係なく使える)
    • これは強力だと思ってるが、まだ試せてない
  • ビルドに必要なファイルが多そうな気がする?
    • .fsproj ファイルとか、他にも必要?
    • Visual Studiodotnet コマンドが隠蔽しててあまりわかってない
  • ビルドに関しては、 F# だと FAKE.exe とかある (まだ使い方調べてない)
  • F# の基本ライブラリは関数型チックな部品がほとんどなので、基本的には C# と同じ BCL (というか .NET Standard でいいのかな?) を使う・・・気がする
  • どんな環境もそうだけど、道から外れるとハマる
    • WebSharper の VS用テンプレートを .NET core で使おうとしたり
    • VSC + Ionide の テンプレートが macOS で動かなかったり
    • Windows上でVSでC#の開発をする分にはハマらないんでしょう、という勝手な前提の上の感想だけど

なんか間違えてそうな部分もあるなー。そもそも C# と CIL を Java.class ファイルだろくらいにしか思ってないのだけど、さきにそっちをきちんと把握すべきなのかもしれない。