1
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

.NETCoreで.exeファイルを書く

Posted at

Macで.NETのプログラムを書いてみるの続き。

.NETCoreのコードはportable?

.NETCoreで書いたコードは、ちゃんと確認してないんだけれど、WindowsでもMacでも、dotnet runすれば動くんだと思う。Javaのbyte code がportableであるように。

project.jsonにもそう書いてある。

"version": "1.0.0-*",
  "buildOptions": {
    "debugType": "portable",
    "emitEntryPoint": true
  },

もしものすごく便利なアプリを書いたらどうする?

例えば、万人にとって便利なアプリを.NETCoreのフレームワークを使って書いたとして、ソレを配布するにはどうする?「まず、.NETCoreをインストールしてください」とは言いにくい。
Javaで言えば、Javaのアプリを使う人全員がjavaのSDKをインストールするワケじゃない。Windowsで言えば、.exeを作りたい。

方法はないだろうか?と思ったら、そういうドキュメントがあった。
.NET Core Application Deployment

project.jsonを編集する。

まず、"type": "platform",の行を消して、以下の項目を追加する。

"runtimes": {
	"osx.10.12-x64": { }
}

というワケで、修正したproject.jsonはこんな感じ。

{
  "version": "1.0.0-*",
  "buildOptions": {
    "debugType": "portable",
    "emitEntryPoint": true
  },
  "dependencies": {},
  "frameworks": {
    "netcoreapp1.1": {
      "dependencies": {
        "Microsoft.NETCore.App": {
          "version": "1.1.0"
        }
      },
      "imports": "dnxcore50"
    }
  },
  "runtimes":{
    "osx.10.12-x64": { }
  }
}

restore と build と publish

後は、dotnet restoreして、dotnet buildして、dotnet publishする。
dotnet restoreには、そこそこ時間がかかる。

dotnet runではなく、コマンドとして起動できるようになった。んだけれど、ちょっと釈然としない。

% ./bin/Debug/netcoreapp1.1/osx.10.12-x64/hello
Hello world.

ちなみに、これを実行するためのランタイムだと思うんだけれど、122 個もの.dllファイルができていた。別のマシンにコピーする時は、これまるごとコピーするんですかね。

Windowsでいう.exeができるのを期待してたんだけどな。

1
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?