-
Notifications
You must be signed in to change notification settings - Fork 0
DNET_DotNetCoreInstallDeploy
- .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);
}
}
}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
-
dotnet publishコマンドのオプションで、
FDDとSCDを選択可能であるもよう。
-
コンソールアプリケーションテンプレートからソースを作成
https://docs.microsoft.com/ja-jp/dotnet/core/tools/dotnet-new?tabs=netcore2x$ dotnet new console -
ビルド
https://docs.microsoft.com/ja-jp/dotnet/core/tools/dotnet-publish?tabs=netcore2x -
実行
dotnet new consoleで、name を省略したとき、
プロジェクト名はローカル・フォルダ名になる。
ここでは、dotフォルダでdotnet new consoleしたのでdll名もdotになる。$ dotnet dot.dll Hello World!
Visual Studioで生成したものを、
上記と同じ手順で、ビルド・実行可能。
Visual Studioで生成したものをビルド・実行
-
生成
Visual Studioのプロジェクト・テンプレートを使用して、.NET Coreアプリケーションを生成する。 -
ビルド
Visual Studioを使用してビルドする。 -
実行
Visual Studioを使用してビルドされたアセンブリを直接指定。$ dotnet ./ConsoleApp1.dll ["aaa","bbb","ccc"]
Visual Studioで生成したものをビルド・実行
-
前提
- Linux における .NET Core の前提条件 | Microsoft Docs
https://docs.microsoft.com/ja-jp/dotnet/core/linux-prerequisites?tabs=netcore2x#centos
- Linux における .NET Core の前提条件 | Microsoft Docs
-
作業
- 以下のコマンドで前提条件ライブラリのインストール状況を確認できる。
$ 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
- 以下のように、プロジェクト・ファイル中の
PropertyGroup - RuntimeIdentifiersセクションに、ランタイム識別子 (RID) を足す。
<RuntimeIdentifiers>win10-x64;osx.10.11-x64</RuntimeIdentifiers>
<RuntimeIdentifiers>win10-x64;centos.7-x64;ubuntu.16.04-x64</RuntimeIdentifiers>- .NET Core のランタイム識別子 (RID) のカタログ\
https://docs.microsoft.com/ja-jp/dotnet/core/rid-catalog
-
RuntimeIdentifiers毎に発行するが、エラーになるので、その前に、
「obj\Release\netcoreapp2.0\発行先フォルダ\」に、Project出力の*.dllを
コピーしておく(現在必要な手順だが将来的に解消する可能性はある)。 -
実行
$ ./ConsoleApp1 ["aaa","bbb","ccc"] -
参考
- .NET Coreのデプロイの「参考 > Microsoft Docs > SCD」の節
SCDの場合を除き、
.NET Core ネイティブ インストーラーにより、.NET Core をインストールする。
-
Linux における .NET Core の前提条件 >
.NET Core for Ubuntu 14.04、Ubuntu 16.04、Ubuntu 16.10 および Linux Mint 17、Linux Mint 18 (64 ビット)
https://docs.microsoft.com/ja-jp/dotnet/core/linux-prerequisites?tabs=netcore2x#install-net-core-for-ubuntu-1404-ubuntu-1604-ubuntu-1610--linux-mint-17-linux-mint-18-64-bit-
信頼済みとして Microsoft プロダクト キーを登録。
curl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > microsoft.gpg sudo mv microsoft.gpg /etc/apt/trusted.gpg.d/microsoft.gpg -
必要なバージョンのホスト パッケージ フィードを設定。
sudo sh -c 'echo "deb [arch=amd64] https://packages.microsoft.com/repos/microsoft-ubuntu-xenial-prod xenial main" > /etc/apt/sources.list.d/dotnetdev.list' sudo apt-get update -
.NET Core をインストール。
sudo apt-get install dotnet-sdk-2.0.0 -
dotnet --version コマンドを実行して、インストールが成功したことを確認。
dotnet --version
-
dotnet publishコマンドのオプションで、
FDDとSCDを選択可能であるもよう。
dotnet new consoleで生成したものを、
CentOS と同じ手順で、ビルド・実行可能。
ランタイム識別子 (RID)だけ異なる。
$ dotnet publish -c Release -r ubuntu.16.04-x64
Visual Studioで生成したものを、
上記と同じ手順で、ビルド・実行可能。
プラットフォームに依存しないので、CentOSの手順と同じになる。
Visual Studioで生成したものをビルド・実行
-
前提
- Linux における .NET Core の前提条件 | Microsoft Docs
https://docs.microsoft.com/ja-jp/dotnet/core/linux-prerequisites?tabs=netcore2x#ubuntu
- Linux における .NET Core の前提条件 | Microsoft Docs
-
作業
- CentOSの手順を参考に作業する。
-
Linux における .NET Core の前提条件
https://docs.microsoft.com/ja-jp/dotnet/core/linux-prerequisites?tabs=netcore2x -
dotnet コマンド - .NET Core CLI
https://docs.microsoft.com/ja-jp/dotnet/core/tools/dotnet?tabs=netcore2x
OpenShiftセカンド・ステップの該当節を参照。
移行メモ
- SCD(CentOS)の「将来的に解消得する可能性はある」は「解消する可能性はある」に正した。
- マイクロソフト系技術情報 Wiki(techinfoofmicrosofttech.osscons.jp)への リンクは、移行済みの
MS_DotNetCoreDeployment/MS_ASPNETCoreDeploymentに張り替えた。
Tags: 移行, .NET Core, Linux, CentOS, Ubuntu, デプロイ, FDD, SCD
このWikiは「Open棟梁Project」,「OSSコンソーシアム 開発基盤部会」によって運営されています。