「[[.NET 開発基盤部会 Wiki>http://dotnetdevelopmentinfrastructure.osscons.jp]]」は、「[[Open棟梁Project>https://github.com/OpenTouryoProject/]]」,「[[OSSコンソーシアム .NET開発基盤部会>https://www.osscons.jp/dotNetDevelopmentInfrastructure/]]」によって運営されています。

-[[戻る>.NET Core on Linux]]

*目次 [#d123527e]
#contents

*概要 [#bd31edc0]
-.NET CoreをLinux上にインストールして、
-.NET Coreアプリをビルド、デプロイ、実行する。

**全容 [#k898e7ee]
-[[.NET Coreのデプロイ - マイクロソフト系技術情報 Wiki>https://techinfoofmicrosofttech.osscons.jp/index.php?.NET%20Core%E3%81%AE%E3%83%87%E3%83%97%E3%83%AD%E3%82%A4]]

**仕組 [#p1125a78]
-*.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.

**サンプル [#o6c9a7ee]
下記は、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);
          }
      }
 }

**全容 [#k898e7ee]
-[[.NET Coreのデプロイ - マイクロソフト系技術情報 Wiki>https://techinfoofmicrosofttech.osscons.jp/index.php?.NET%20Core%E3%81%AE%E3%83%87%E3%83%97%E3%83%AD%E3%82%A4]]

*CentOS [#a5d769d4]

**.NET Coreのインストール [#l62137da]
[[SCD>#l0581cb3]]の場合を除き、.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>#rf02805f]] & [[SCD>#l0581cb3]])。 [#pdbdd6a7]
dotnet publishコマンドのオプションで、[[FDD>#rf02805f]]と[[SCD>#l0581cb3]]を選択可能であるもよう。

***dotnet new consoleで生成したものをビルド・実行 [#qd7686f6]

-コンソールアプリケーションテンプレートからソースを作成~
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
--プロジェクト・ファイルのあるフォルダでオプションから[[FDD>#rf02805f]]と[[SCD>#l0581cb3]]を選択してビルドを実行する。
---[[FDD>#rf02805f]]
 $ dotnet publish -f netcoreapp2.0
---[[SCD>#l0581cb3]]
 $ dotnet publish -c Release -r centos.7-x64

--Visual Studioで作成したプロジェクト・ソリューションもビルド可能。

-実行~
dotnet new consoleで、name を省略したとき、~
プロジェクト名はローカル・フォルダ名になる。~
ここでは、dotフォルダでdotnet new consoleしたのでdll名もdotになる。
 $ dotnet dot.dll
 Hello World!

***Visual Studioで生成したものをビルド・実行 [#n0003dc7]
Visual Studioで生成したものを、[[上記と同じ手順>#qd7686f6]]で、ビルド・実行可能。

**Windows上でビルドしたものを動かす。 [#p52d2bc1]
-ここでは、Visual Studioでビルドする手順のみ説明する(dotnetでもビルドできるが)。
-Windows上でVisual Studioを使用して、[[FDD>#rf02805f]]と[[SCD>#l0581cb3]]の其々のビルドを行う。

***FDD [#rf02805f]
Visual Studioで生成したものをビルド・実行

-生成~
Visual Studioのプロジェクト・テンプレートを使用して、.NET Coreアプリケーションを生成する。

-ビルド~
Visual Studioを使用してビルドする。

-実行~
Visual Studioを使用してビルドされたアセンブリを直接指定。
 $ dotnet ./ConsoleApp1.dll
 ["aaa","bbb","ccc"]

***SCD [#l0581cb3]
Visual Studioで生成したものをビルド・実行

-前提

--Linux における .NET Core の前提条件 | Microsoft Docs~
https://docs.microsoft.com/ja-jp/dotnet/core/linux-prerequisites?tabs=netcore2x#centos

-作業
--以下のコマンドで前提条件ライブラリのインストール状況を確認できる。
 $ 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のデプロイ - マイクロソフト系技術情報 Wiki > 参考 > Microsoft Docs > SCD~
https://techinfoofmicrosofttech.osscons.jp/index.php?.NET%20Core%E3%81%AE%E3%83%87%E3%83%97%E3%83%AD%E3%82%A4#ie53c21a

*Ubuntu [#k029e1d4]

**.NET Coreのインストール [#s27d142d]
[[SCD>#rf2da76b]]の場合を除き、.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

**Ubuntu上でビルドして動かす([[FDD>#u7da78b6]] & [[SCD>#rf2da76b]])。 [#i967650f]
dotnet publishコマンドのオプションで、[[FDD>#u7da78b6]]と[[SCD>#rf2da76b]]を選択可能であるもよう。

***dotnet new consoleで生成したものをビルド・実行 [#ec33be57]
dotnet new consoleで生成したものを、[[上記と同じ手順>#qd7686f6]]で、ビルド・実行可能。

ランタイム識別子 (RID)だけ異なる。

 $ dotnet publish -c Release -r ubuntu.16.04-x64

***Visual Studioで生成したものをビルド・実行 [#zd75c51e]
Visual Studioで生成したものを、[[上記と同じ手順>#ec33be57]]で、ビルド・実行可能。

**Windows上でビルドしたものを動かす。 [#pae4bb39]
-ここでは、Visual Studioでビルドする手順のみ説明する(dotnetでもビルドできるが)。
-Windows上でVisual Studioを使用して、[[FDD>#u7da78b6]]と[[SCD>#rf2da76b]]の其々のビルドを行う。

***FDD [#u7da78b6]
プラットフォームに依存しないので、[[CentOSの手順>#rf02805f]]と同じになる。

***SCD [#rf2da76b]
Visual Studioで生成したものをビルド・実行

-前提

--Linux における .NET Core の前提条件 | Microsoft Docs~
https://docs.microsoft.com/ja-jp/dotnet/core/linux-prerequisites?tabs=netcore2x#ubuntu

-作業

--[[CentOSの手順>#l0581cb3]]を参考に作業する。

*参考 [#t7c2857c]
**Microsoft Docs [#ycf4f1e2]
-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

**osscons.jp [#qcb03875]

***[[ASP.NET Coreのインストールとデプロイ]] [#m545be0d]

***[[Red Hat Customer Portal > Chapter 1.>OpenShiftセカンド・ステップ#we8ccdea]] [#a71c6dc3]

***マイクロソフト系技術情報 Wiki [#v5eb2379]
-[[.NET Coreのデプロイ>https://techinfoofmicrosofttech.osscons.jp/index.php?.NET%20Core%E3%81%AE%E3%83%87%E3%83%97%E3%83%AD%E3%82%A4]]
-[[ASP.NET Coreのデプロイ>https://techinfoofmicrosofttech.osscons.jp/index.php?ASP.NET%20Core%E3%81%AE%E3%83%87%E3%83%97%E3%83%AD%E3%82%A4]]

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS