Linux と macOS で動作する .NET Core アプリケーションのビルド
サポートされるプラットフォーム: Windows® (オーサリング)、Linux® (実行)、macOS (実行)。
この例では、ライブラリ コンパイラを使用して .NET アセンブリを作成し、それを Linux または macOS 実行できる .NET Core アプリケーションに統合する方法を説明します。
前提条件
MATLAB® 検索パスで認識される新しい作業フォルダーを作成します。この例では、新しい作業フォルダーとして
C:\Work
を使用しています。.NET Core アプリケーションを実行する予定の Windows プラットフォームと追加のプラットフォームに MATLAB Runtime をインストールします。詳細については、MATLAB Runtime のインストールと構成を参照してください。
Linux プラットフォームおよび macOS プラットフォームの場合、MATLAB Runtime のインストール後に環境変数
LD_LIBRARY_PATH
と環境変数DYLD_LIBRARY_PATH
をそれぞれ設定する必要があります。詳細については、デプロイ用の MATLAB Runtime パスの設定を参照してください。Visual Studio® および .NET Core 2.0 以降がインストールされていることを確認します。Visual Studio 2017 の Version 15.8.2 がインストールされている場合は、.NET Core 2.0 以降を別途インストールする必要はありません。
.NET アセンブリの作成
ライブラリ コンパイラ アプリを使用して、関数を .NET アセンブリにパッケージ化します。あるいは、プログラムによる方法で MATLAB コマンド ウィンドウから .NET アセンブリを作成する場合は、compiler.build.dotNETAssembly
を参照してください。
以下のコードを使用して、
mymagic.m
という名前の新しい MATLAB ファイルを作業フォルダーに作成します。function out = mymagic(in) out = magic(in);
MATLAB コマンド ラインで「
libraryCompiler
」と入力し、ライブラリ コンパイラ アプリを開きます。ツールストリップの [タイプ] セクションで
[.NET アセンブリ]
を選択し、[エクスポートする関数] セクションで [追加] ボタンをクリックして、ファイルmymagic.m
をプロジェクトに追加します。[ライブラリ情報] セクションで、ライブラリに
MyMatrixFunctions
という名前を付けます。クラス
Class1
をダブルクリックし、名前をMyMagic
に変更します。プロジェクト名を
MyMatrixFunctions
としてデプロイ プロジェクトを保存します。[パッケージ] を選択して、.NET アセンブリを作成します。作成されたファイルの詳細については、MATLAB 関数のパッケージ化後に生成されるファイルを参照してください。
.NET Core アプリケーションの作成
Windows でコマンド プロンプトを開き、フォルダー
C:\Work
に移動します。コマンド ラインに以下を入力します。
dotnet new console --name MyDotNetCoreApp
これにより、次の内容をもつ
MyDotNetCoreApp
という名前のフォルダーが作成されます。obj
フォルダーMyDotNetCoreApp.csproj
プロジェクト ファイルProgram.cs
C# ソース ファイル
プロジェクト ファイルをテキスト エディターで開きます。
<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\R2023b\toolbox\dotnetbuilder\bin\win64\v4.0\MWArray.dll</HintPath> <!--Path to MWArray.dll in the MATLAB Runtime--> </Reference> </ItemGroup> </Project>
C# ソース ファイル
Program.cs
を開き、既存のコードを次のコードに置き換えます。コマンド ラインに以下を入力して、.NET Core プロジェクトをビルドします。
dotnet build MyDotNetCoreApp.csproj
コマンド ラインに以下を入力して、アプリケーションを実行します。
dotnet run -- 3
アプリケーションにより 3 行 3 列の魔方陣が表示されます。
プロジェクトを自己完結型のデプロイとしてパブリッシュし、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 アプリケーションの実行
Release
フォルダーを、Windows のC:\Work\MyDotNetCoreApp\bin
から Linux または macOS マシンの~/Work
にコピーします。Linux マシンで、MATLAB Runtime がインストールされていることを確認し、ライブラリ パス環境変数を設定します。詳細については、前提条件を参照してください。
コマンド シェルを開き、次に移動します。
~/Work/Release/netcoreapp2.2/<os-architecture>/publish
次を入力して、.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