「.NET 開発基盤部会 Wiki」は、「Open棟梁Project」,「OSSコンソーシアム .NET開発基盤部会」によって運営されています。
目次 †
概要 †
- .NET CoreをLinux上にインストールして、
- .NET Coreアプリをビルド、デプロイ、実行する。
全容 †
仕組 †
- *.dllファイルを動かしているように見えるのでWineなどを使用しているようにみえるが、
- .NETの*.dllファイルは、ネイティブではなく中間言語なので、コレを使用して、
Linuxネイティブの実行イメージを再生させる仕組みで動作している模様。
- Is Core.NET dependent on WINE? - Full Framework - .NET Foundation Forums
http://forums.dotnetfoundation.org/t/is-core-net-dependent-on-wine/1673
- Comparing WINE and .NET Core is pretty much apples-and-oranges.
- WINE is an alternate implementation of a lot of the Windows DLLs,
so that Windows programs can (attempt) to run on Linux.
- .NET Core allows code to be compiled and run natively on Linux.
サンプル †
下記は、Visual Studioプロジェクトのサンプル(NuGet?を使用した)。
using System;
using Newtonsoft.Json;
namespace ConsoleApp1
{
class Program
{
static void Main(string[] args)
{
string[] str_ary = new string[] { "aaa", "bbb", "ccc" }; Console.WriteLine(JsonConvert.SerializeObject(str_ary));
Console.WriteLine(Console.ReadKey().KeyChar);
}
}
}
CentOS †
.NET Coreのインストール †
SCDの場合を除き、.NET Core ネイティブ インストーラーにより、.NET Core をインストールする。
- Linux における .NET Core の前提条件 >
CentOS 7.1 (64 bit) および Oracle Linux 7.1 (64 bit) 用の .NET Core をインストールする
https://docs.microsoft.com/ja-jp/dotnet/core/linux-prerequisites?tabs=netcore2x#install-net-core-for-centos-71-64-bit--oracle-linux-71-64-bit
- 信頼済みとして Microsoft プロダクト キーを登録。
sudo rpm --import https://packages.microsoft.com/keys/microsoft.asc
- 必要なバージョンのホスト パッケージ フィードを設定。
sudo sh -c 'echo -e "[packages-microsoft-com-prod]\nname=packages-microsoft-com-prod \nbaseurl=https://packages.microsoft.com/yumrepos/microsoft-rhel7.3-prod\nenabled=1\ngpgcheck=1\ngpgkey=https://packages.microsoft.com/keys/microsoft.asc" > /etc/yum.repos.d/dotnetdev.repo'
- .NET Core をインストール。
sudo yum update
sudo yum install libunwind libicu <--- 何気に、SCDでも必要な前提ライブラリをインストールしている。
sudo yum install dotnet-sdk-2.0.0
- パスに dotnet を追加します。
export PATH=$PATH:$HOME/dotnet
- dotnet --version コマンドを実行して、インストールが成功したことを確認。
dotnet --version
CentOS上でビルドして動かす(FDD & SCD)。 †
dotnet publishコマンドのオプションで、FDDとSCDを選択可能であるもよう。
dotnet new consoleで生成したものをビルド・実行 †
- Visual Studioで作成したプロジェクト・ソリューションもビルド可能。
Visual Studioで生成したものをビルド・実行 †
Visual Studioで生成したものを、上記と同じ手順で、ビルド・実行可能。
Windows上でビルドしたものを動かす。 †
- ここでは、Visual Studioでビルドする手順のみ説明する(dotnetでもビルドできるが)。
- Windows上でVisual Studioを使用して、FDDとSCDの其々のビルドを行う。
FDD †
Visual Studioで生成したものをビルド・実行
- 生成
Visual Studioのプロジェクト・テンプレートを使用して、.NET Coreアプリケーションを生成する。
- ビルド
Visual Studioを使用してビルドする。
SCD †
Visual Studioで生成したものをビルド・実行
- 作業
- 以下のコマンドで前提条件ライブラリのインストール状況を確認できる。
$ sudo yum list installed libunwind lttng-ust libcurl openssl-libs libuuid krb5-libs libicu zlib
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
Installed Packages
krb5-libs.x86_64 1.15.1-8.el7 @anaconda
libcurl.x86_64 7.29.0-42.el7_4.1 @updates
libicu.x86_64 50.1.2-15.el7 @base
libunwind.x86_64 2:1.2-2.el7 @base
libuuid.x86_64 2.23.2-43.el7_4.2 @updates
openssl-libs.x86_64 1:1.0.2k-8.el7 @anaconda
zlib.x86_64 1.2.7-17.el7 @anaconda
- RuntimeIdentifiers?毎に発行するが、エラーになるので、その前に、
「obj\Release\netcoreapp2.0\発行先フォルダ\」に、Project出力の*.dllを
コピーしておく(現在必要な手順だが将来的に解消得する可能性はある)。
Ubuntu †
.NET Coreのインストール †
SCDの場合を除き、.NET Core ネイティブ インストーラーにより、.NET Core をインストールする。
- dotnet --version コマンドを実行して、インストールが成功したことを確認。
dotnet --version
Ubuntu上でビルドして動かす(FDD & SCD)。 †
dotnet publishコマンドのオプションで、FDDとSCDを選択可能であるもよう。
dotnet new consoleで生成したものをビルド・実行 †
dotnet new consoleで生成したものを、上記と同じ手順で、ビルド・実行可能。
ランタイム識別子 (RID)だけ異なる。
$ dotnet publish -c Release -r ubuntu.16.04-x64
Visual Studioで生成したものをビルド・実行 †
Visual Studioで生成したものを、上記と同じ手順で、ビルド・実行可能。
Windows上でビルドしたものを動かす。 †
- ここでは、Visual Studioでビルドする手順のみ説明する(dotnetでもビルドできるが)。
- Windows上でVisual Studioを使用して、FDDとSCDの其々のビルドを行う。
FDD †
プラットフォームに依存しないので、CentOSの手順と同じになる。
SCD †
Visual Studioで生成したものをビルド・実行
参考 †
Microsoft Docs †
osscons.jp †
マイクロソフト系技術情報 Wiki †