2017年4月24日月曜日

新しいdotnetコマンドで自己展開型(self contained)なバイナリを生成するには

VS.NET 2017系になって、Dotnet coreがproject.jsonからcsprojになりました。

以前は、project.jsonで自己展開型(.exeにビルドするやつ)にビルドするには、
project.jsonに、以下のようにruntimesセクションを追加して

"runtimes": {
  "win10-x64": {}
  "osx.10.10-x64: {}
}

dotnet build -r win10-x64

などとコマンドラインで叩くと-r(runtimes)オプションで指定した環境向けに単独で実行できるバイナリが生成されます。

VS.NET 2017では、project.jsonが廃止されて*.csprojになってしまったので、自己展開型のバイナリ生成が上記のやり方ではできなくなってしまいました。

VS.NET 2017のプロジェクトのプロパティからも設定できなかったが、csprojを直接編集することでできる模様。

<PropertyGroup>
  <RuntimeIdentifiers>win10-x64</RuntimeIdentifiers>
  <RuntimeIdentifiers>osx.10.10-x64</RuntimeIdentifiers>
</PropertyGroup>

上記のようにした上で、

dotnet build -r win10-x64
dotnet build -r osx.10.10-x64

とコマンドラインで叩くと、指定した環境向けの実行バイナリが生成される。

参考: https://docs.microsoft.com/ja-jp/dotnet/articles/core/deploying/

どっちにしてもVS.NET上で指定はできないみたい。
→とわいえ、VS.NET 2017からDotnet Coreサポートは大分良くなったよ!!