.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コマンドのオプションで、FDDSCDを選択可能であるもよう。

dotnet new consoleで生成したものをビルド・実行

  • Visual Studioで作成したプロジェクト・ソリューションもビルド可能。
  • 実行
    dotnet new consoleで、name を省略したとき、
    プロジェクト名はローカル・フォルダ名になる。
    ここでは、dotフォルダでdotnet new consoleしたのでdll名もdotになる。
    $ dotnet dot.dll
    Hello World!

Visual Studioで生成したものをビルド・実行

Visual Studioで生成したものを、上記と同じ手順で、ビルド・実行可能。

Windows上でビルドしたものを動かす。

  • ここでは、Visual Studioでビルドする手順のみ説明する(dotnetでもビルドできるが)。
  • Windows上でVisual Studioを使用して、FDDSCDの其々のビルドを行う。

FDD

Visual Studioで生成したものをビルド・実行

  • 生成
    Visual Studioのプロジェクト・テンプレートを使用して、.NET Coreアプリケーションを生成する。
  • ビルド
    Visual Studioを使用してビルドする。
  • 実行
    Visual Studioを使用してビルドされたアセンブリを直接指定。
    $ dotnet ./ConsoleApp1.dll
    ["aaa","bbb","ccc"]

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
  • 以下のように、プロジェクト・ファイル中の
    PropertyGroup? - RuntimeIdentifiers?セクションに、ランタイム識別子 (RID) を足す。
    <RuntimeIdentifiers>win10-x64;osx.10.11-x64</RuntimeIdentifiers>
    <RuntimeIdentifiers>win10-x64;centos.7-x64;ubuntu.16.04-x64</RuntimeIdentifiers>
  • RuntimeIdentifiers?毎に発行するが、エラーになるので、その前に、
    「obj\Release\netcoreapp2.0\発行先フォルダ\」に、Project出力の*.dllを
    コピーしておく(現在必要な手順だが将来的に解消得する可能性はある)。
  • 実行
    $ ./ConsoleApp1
    ["aaa","bbb","ccc"]
  • 参考

Ubuntu

.NET Coreのインストール

SCDの場合を除き、.NET Core ネイティブ インストーラーにより、.NET Core をインストールする。

  • 信頼済みとして 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 & SCD)。

dotnet publishコマンドのオプションで、FDDSCDを選択可能であるもよう。

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を使用して、FDDSCDの其々のビルドを行う。

FDD

プラットフォームに依存しないので、CentOSの手順と同じになる。

SCD

Visual Studioで生成したものをビルド・実行

  • 前提
  • 作業

参考

Microsoft Docs

osscons.jp

ASP.NET Coreのインストールとデプロイ

Red Hat Customer Portal > Chapter 1.

マイクロソフト系技術情報 Wiki


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2020-12-08 (火) 11:22:20 (1228d)