Ⅰ. はじめに
タイトルの通り「.NET CoreのアプリケーションをCoreRTを利用してビルドする方法」です。
CoreRTを利用することにより以下の恩恵が受けられます。
Ⅱ. やり方(Windows)
環境
- Windows 10 64bit
- Visual Studio 2017 (VC++)
- .NET Core SDK
1. プロジェクトを作成する
dotnet new console -o myApp cd myApp dotnet new nuget notepad nuget.config
nuget.config
<?xml version="1.0" encoding="utf-8"?> <configuration> <packageSources> <add key="dotnet-core" value="https://dotnet.myget.org/F/dotnet-core/api/v3/index.json" /> <add key="nuget.org" value="https://api.nuget.org/v3/index.json" protocolVersion="3" /> </packageSources> </configuration>
dotnet add package Microsoft.DotNet.ILCompiler -v 1.0.0-alpha-*
2. ビルドする
dotnet publish -r win-x64 -c Release
3. 実行結果
> bin\Release\netcoreapp2.2\win-x64\publish\myApp.exe Hello World!
Ⅲ. やり方(Linux)
環境
- Ubuntu 18.04
- .NET Core SDK
1. 必要なものをインストールする
sudo apt-get install cmake clang-3.9 uuid-dev libcurl4-openssl-dev zlib1g-dev libkrb5-dev wget http://security.ubuntu.com/ubuntu/pool/main/i/icu/libicu55_55.1-7ubuntu0.4_amd64.deb sudo dpkg -i libicu55_55.1-7ubuntu0.4_amd64.deb
2. プロジェクトを作成する
dotnet new console -o myApp cd myApp dotnet new nuget vim nuget.config
nuget.config
<?xml version="1.0" encoding="utf-8"?> <configuration> <packageSources> <add key="dotnet-core" value="https://dotnet.myget.org/F/dotnet-core/api/v3/index.json" /> <add key="nuget.org" value="https://api.nuget.org/v3/index.json" protocolVersion="3" /> </packageSources> </configuration>
dotnet add package Microsoft.DotNet.ILCompiler -v 1.0.0-alpha-*
3. ビルドする
dotnet publish -r linux-x64 -c Release
4. 実行結果
$ ./bin/release/netcoreapp2.2/linux-x64/publish/myApp Hello World!
その他
Q. クロスコンパイルは可能ですか?
A. 不可能です。(2019/01/04時点)
https://github.com/dotnet/corert/issues/5458
Q. IL2CPPは利用できますか?
A. できます。しかし開発段階の為不安定です。(2019/01/04時点)
dotnet publish /p:NativeCodeGen=cpp -r win-x64 -c Release
参考
https://github.com/dotnet/corert/blob/master/Documentation/intro-to-corert.md
https://github.com/dotnet/corert/blob/master/Documentation/prerequisites-for-building.md
https://github.com/dotnet/corert/blob/master/Documentation/how-to-build-and-run-ilcompiler-in-console-shell-prompt.md
https://github.com/dotnet/corert/tree/master/samples/WebApi
https://shazwazza.com/post/installing-net-core-101-on-ubuntu-1610/