Main Content

LinuxmacOS で動作する .NET Core アプリケーションのビルド

サポートされるプラットフォーム: Windows® (オーサリング)、Linux® (実行)、macOS (実行)。

この例では、ライブラリ コンパイラを使用して .NET アセンブリを作成し、それを Linux または macOS 実行できる .NET Core アプリケーションに統合する方法を説明します。

前提条件

  1. MATLAB® 検索パスで認識される新しい作業フォルダーを作成します。この例では、新しい作業フォルダーとして C:\Work を使用しています。

  2. .NET Core アプリケーションを実行する予定の Windows プラットフォームと追加のプラットフォームに MATLAB Runtime をインストールします。詳細については、MATLAB Runtime のインストールと構成を参照してください。

  3. Linux プラットフォームおよび macOS プラットフォームの場合、MATLAB Runtime のインストール後に環境変数 LD_LIBRARY_PATH と環境変数 DYLD_LIBRARY_PATH をそれぞれ設定する必要があります。詳細については、デプロイ用の MATLAB Runtime パスの設定を参照してください。

  4. Visual Studio® および .NET Core 2.0 以降がインストールされていることを確認します。Visual Studio 2017 の Version 15.8.2 がインストールされている場合は、.NET Core 2.0 以降を別途インストールする必要はありません。

.NET アセンブリの作成

ライブラリ コンパイラ アプリを使用して、関数を .NET アセンブリにパッケージ化します。あるいは、プログラムによる方法で MATLAB コマンド ウィンドウから .NET アセンブリを作成する場合は、compiler.build.dotNETAssembly を参照してください。

  1. 以下のコードを使用して、mymagic.m という名前の新しい MATLAB ファイルを作業フォルダーに作成します。

    function out = mymagic(in)
    out = magic(in);
  2. MATLAB コマンド ラインで「libraryCompiler」と入力し、ライブラリ コンパイラ アプリを開きます。

  3. ツールストリップの [タイプ] セクションで [.NET アセンブリ] を選択し、[エクスポートする関数] セクションで [追加] ボタンをクリックして、ファイル mymagic.m をプロジェクトに追加します。

  4. [ライブラリ情報] セクションで、ライブラリに MyMatrixFunctions という名前を付けます。

  5. クラス Class1 をダブルクリックし、名前を MyMagic に変更します。

  6. プロジェクト名を MyMatrixFunctions としてデプロイ プロジェクトを保存します。

  7. [パッケージ] を選択して、.NET アセンブリを作成します。作成されたファイルの詳細については、MATLAB 関数のパッケージ化後に生成されるファイルを参照してください。

.NET Core アプリケーションの作成

  1. Windows でコマンド プロンプトを開き、フォルダー C:\Work に移動します。

  2. コマンド ラインに以下を入力します。

    dotnet new console --name MyDotNetCoreApp

    これにより、次の内容をもつ MyDotNetCoreApp という名前のフォルダーが作成されます。

    • obj フォルダー

    • MyDotNetCoreApp.csproj プロジェクト ファイル

    • Program.cs C# ソース ファイル

  3. プロジェクト ファイルをテキスト エディターで開きます。

    <Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <OutputType>Exe</OutputType> <TargetFramework>netcoreapp2.0</TargetFramework> </PropertyGroup> </Project>

    <ItemGroup> タグを使用して、プロジェクトに以下の参照を追加します。

    • ライブラリ コンパイラ アプリによって作成された .NET アセンブリファイル MyMatrixFunctions.dll

    • <MATLAB_RUNTIME_INSTALL_DIR>\toolbox\dotnetbuilder\bin\win64\<framework_version> にある MWArray.dll

    参照を追加すると、プロジェクト ファイルは次のようになります。

    <Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <OutputType>Exe</OutputType> <TargetFramework>netcoreapp2.2</TargetFramework> </PropertyGroup> <ItemGroup> <Reference Include="MyMatrixFunctions"> <HintPath>C:\work\MyMatrixFunctions\for_redistribution_files_only\MyMatrixFunctions.dll</HintPath> <!--Path to .NET Assembly created by Library Compiler app--> </Reference> <Reference Include="MWArray"> <HintPath>C:\Program Files\MATLAB\MATLAB Runtime\v97\toolbox\dotnetbuilder\bin\win64\v4.0\MWArray.dll</HintPath> <!--Path to MWArray.dll in the MATLAB Runtime--> </Reference> </ItemGroup> </Project>
  4. C# ソース ファイル Program.cs を開き、既存のコードを次のコードに置き換えます。

     Program.cs

  5. コマンド ラインに以下を入力して、.NET Core プロジェクトをビルドします。

    dotnet build MyDotNetCoreApp.csproj
  6. コマンド ラインに以下を入力して、アプリケーションを実行します。

    dotnet run -- 3

    アプリケーションにより 3 行 3 列の魔方陣が表示されます。

  7. プロジェクトを自己完結型のデプロイとしてパブリッシュし、Linux または macOS のいずれかでアプリケーションを実行します。

    • Linux にパブリッシュするには、次のコマンドを 1 行で入力します。

      dotnet publish --configuration Release --framework netcoreapp2.2 
        --runtime linux-x64 --self-contained true MyDotNetCoreApp.csproj

    • macOS にパブリッシュするには、次のコマンドを 1 行で入力します。

      dotnet publish --configuration Release --framework netcoreapp2.2 
        --runtime osx.10.11-x64 --self-contained true MyDotNetCoreApp.csproj

Linux での .NET Core アプリケーションの実行

  1. Release フォルダーを、Windows の C:\Work\MyDotNetCoreApp\bin から Linux または macOS マシンの ~/Work にコピーします。

  2. Linux マシンで、MATLAB Runtime がインストールされていることを確認し、ライブラリ パス環境変数を設定します。詳細については、前提条件を参照してください。

  3. コマンド シェルを開き、次に移動します。

    ~/Work/Release/netcoreapp2.2/<os-architecture>/publish
  4. 次を入力して、.NET Core アプリケーションを実行します。

    ./MyDotNetCoreApp 3
    Magic square of order 3
    
         8     1     6
         3     5     7
         4     9     2
    
    Magic square as native array:
    
    Element(0,0)= 8
    Element(0,1)= 1
    Element(0,2)= 6
    Element(1,0)= 3
    Element(1,1)= 5
    Element(1,2)= 7
    Element(2,0)= 4
    Element(2,1)= 9
    Element(2,2)= 2
    

関連するトピック