メインコンテンツ

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

compiler.build.dotNETAssembly

MATLAB の外部でデプロイする .NET アセンブリを作成する

R2021a 以降

説明

compiler.build.dotNETAssembly(Files) は、Files で指定された MATLAB® 関数を使用して .NET アセンブリを作成します。

compiler.build.dotNETAssembly(Files,Name,Value) は、名前と値の引数を 1 つ以上使用して追加オプションを指定して .NET アセンブリを作成します。オプションには、クラス名、出力ディレクトリ、含める追加ファイルなどがあります。

compiler.build.dotNETAssembly(ClassMap) は、container.Map オブジェクト ClassMap を使用してクラス マッピングを指定して .NET アセンブリを作成します。

compiler.build.dotNETAssembly(ClassMap,Name,Value) は、名前と値の引数を 1 つ以上使用して指定した追加オプションと ClassMap を使用して .NET アセンブリを作成します。オプションには、アセンブリ名、出力ディレクトリ、含める追加ファイルなどがあります。

compiler.build.dotNETAssembly(opts) は、compiler.build.DotNetAssemblyOptions オブジェクト opts を使用してオプションを指定した .NET アセンブリを作成します。名前と値の引数を使用して他のオプションを指定することはできません。

results = compiler.build.dotNETAssembly(___) は、前述の構文にある入力引数の任意の組み合わせを使用して、ビルド情報を compiler.build.Results オブジェクトとして返します。ビルド情報は、ビルド タイプ、コンパイル済みファイルへのパス、およびビルド オプションで構成されます。

すべて折りたたむ

魔方陣を生成する関数ファイルを使用して、Windows® システムで .NET アセンブリを作成します。

MATLAB で、.NET アセンブリとしてデプロイする MATLAB 関数を見つけます。この例では、matlabroot\extern\examples\compiler にあるファイル magicsquare.m を使用します。

appFile = which('magicsquare.m');

compiler.build.dotNETAssembly コマンドを使用して、.NET アセンブリをビルドします。

compiler.build.dotNETAssembly(appFile);

ビルド関数により、現在の作業ディレクトリの magicsquaredotNETAssembly という名前のフォルダー内に以下のファイルが生成されます。

  • GettingStarted.html — アセンブリの統合に関する情報が含まれる HTML ファイル。

  • includedSupportPackages.txt — アセンブリに含まれるすべてのサポート ファイルをリストしたテキスト ファイル。

  • magicsquare.dllmwArray API を使用してアクセス可能なダイナミックリンク ライブラリ ファイル。

  • magicsquare.xmlmwArray アセンブリのドキュメンテーションが含まれる XML ファイル。

  • magicsquare_overview.html — コンポーネントにアクセスするための要件や、mwArray クラス階層を使用して引数を生成するための要件が含まれる HTML ファイル。

  • magicsquareNative.dll — ネイティブ API を使用してアクセス可能なダイナミックリンク ライブラリ ファイル。

  • magicsquareNative.xml — ネイティブ アセンブリのドキュメンテーションが含まれる XML ファイル。

  • magicsquareVersion.cs — バージョン情報が含まれる C# ファイル。

  • mccExcludedFiles.log — アプリケーションに含まれていないすべてのツールボックス関数のリストが含まれるログ ファイル。サポートされていない関数の詳細については、MATLAB Compiler の制限を参照してください。

  • readme.txt — パッケージ化およびインターフェイスの情報が含まれるテキスト ファイル。

  • requiredMCRProducts.txtMATLAB Runtime がアプリケーションを実行するために必要な製品の製品 ID が含まれるテキスト ファイル。

  • unresolvedSymbols.txt — 未解決のシンボルに関する情報が含まれるテキスト ファイル。

Windows システム上で .NET アセンブリを作成し、名前と値の引数を使用してカスタマイズします。

この例では、matlabroot\extern\examples\compiler にあるファイル flames.mflames.mat を使用します。

appFile = which('flames.m');
MATFile = which('flames.mat');

compiler.build.dotNETAssembly コマンドを使用して、.NET アセンブリをビルドします。名前と値の引数を使用してアセンブリ名とバージョンを指定し、MAT ファイルを追加して、詳細な出力を有効にします。

compiler.build.dotNETAssembly(appFile,'AssemblyName','FlamesComp', ...
'AssemblyVersion','2.0', ...
'AdditionalFiles',MATFile, ...
'Verbose','on');

クラス マップおよび複数の関数ファイルを使用して、Windows システムで .NET アセンブリを作成します。

キーがクラス名で、値が関数ファイルの場所である containers.Map オブジェクトを作成します。

cmap = containers.Map;
cmap('Class1') = {'exampleFcn1.m','exampleFcn2.m'};
cmap('Class2') = {'exampleFcn3.m','exampleFcn4.m'};

compiler.build.dotNETAssembly コマンドを使用して、.NET アセンブリをビルドします。

compiler.build.dotNETAssembly(cmap);

あるいは、.NET アセンブリのビルド時に名前と値の引数を使用して追加オプションを指定することもできます。

compiler.build.dotNETAssembly(cmap, ...
'AssemblyName','MyExampleComp', ...
'AssemblyVersion','2.0', ...
'Verbose','on');

compiler.build.DotNETAssemblyOptions オブジェクトを使用して、Windows システムで複数の .NET アセンブリを作成します。

この例では、matlabroot\extern\examples\compiler にあるファイル magicsquare.m を使用します。

appFile = which('magicsquare.m');

appFile を使用して DotNETAssemblyOptions オブジェクトを作成します。名前と値の引数を使用して共通の出力ディレクトリを指定し、アセンブリ アーカイブを別途生成して、詳細な出力を有効にします。

opts = compiler.build.DotNETAssemblyOptions(appFile, ...
'OutputDir','D:\Documents\MATLAB\work\dotNETBatch', ...
'EmbedArchive','off', ...
'Verbose','on')
opts = 

  DotNETAssemblyOptions with properties:

             AssemblyName: 'example.magicsquare'
                 ClassMap: [1×1 containers.Map]
               DebugBuild: off
           EnableRemoting: off
         FrameworkVersion: '4.0'
    SampleGenerationFiles: {}
        StrongNameKeyFile: ''
          AssemblyVersion: '1.0.0.0'
             EmbedArchive: off
                Interface: 'mwarray'
          AdditionalFiles: {}
      AutoDetectDataFiles: on
    ExternalEncryptionKey: [0×0 struct]
         ObfuscateArchive: off
          SecretsManifest: ''
          SupportPackages: {'autodetect'}
                  Verbose: on
                OutputDir: 'D:\Documents\MATLAB\work\dotNETBatch'

   Class Map Information
         magicsquareClass: {'C:\Program Files\MATLAB\R2025a\extern\examples\compiler\magicsquare.m'}

DotNETAssemblyOptions オブジェクトを使用して .NET アセンブリをビルドします。

compiler.build.dotNETAssembly(opts);

同じオプションをもつ関数ファイル hello.m を使用してコンパイルするには、ビルド関数を再度実行する前に、ドット表記を使用して既存の COMComponentOptions オブジェクトの ClassMap を変更します。

remove(opts.ClassMap, keys(opts.ClassMap));
opts.ClassMap('helloClass') = which('hello.m');
compiler.build.dotNETAssembly(opts);

ClassMap 引数を変更して再コンパイルすることにより、同じオプション オブジェクトを使用して複数のコンポーネントをコンパイルできます。

.NET アセンブリを Windows システムで作成し、ビルド タイプ、生成ファイル、含まれるサポート パッケージ、およびビルド オプションに関する情報を compiler.build.Results オブジェクトに保存します。

ファイル magicsquare.m を使用してコンパイルします。

results = compiler.build.dotNETAssembly('magicsquare.m')
results = 

  Results with properties:

              BuildType: 'dotNETAssembly'
                  Files: {4×1 cell}
IncludedSupportPackages: {}
                Options: [1×1 compiler.build.DotNETAssemblyOptions]
    RuntimeDependencies: [1×1 compiler.runtime.Dependencies]

Files プロパティには、以下のコンパイル済みファイルへのパスが格納されます。

  • magicsquare.dll

  • magicsquareNative.dll

  • magicsquare_overview.dll

  • GettingStarted.html

入力引数

すべて折りたたむ

MATLAB 関数を実装するファイル。文字ベクトル、string スカラー、string 配列、または文字ベクトルの cell 配列として指定します。ファイル パスは現在の作業ディレクトリを基準とした相対パス、または絶対パスにできます。ファイルの拡張子は .m.p.mlx.mexa64 のいずれかである必要があります。

例: ["myfunc1.m","myfunc2.m"]

データ型: char | string | cell

クラス マップ。containers.Map オブジェクトとして指定します。マッピングのキーはクラス名であり、各値は対応するクラスにマッピングされるファイルのセットです。ファイルの拡張子は .m.p.mlx.mexa64 のいずれかである必要があります。

例: cmap

.NET アセンブリのビルド オプション。compiler.build.DotNETAssemblyOptions オブジェクトとして指定します。

名前と値の引数

すべて折りたたむ

オプションの引数のペアを Name1=Value1,...,NameN=ValueN として指定します。ここで、Name は引数名で、Value は対応する値です。名前と値の引数は他の引数の後に指定しなければなりませんが、ペアの順序は重要ではありません。

R2021a より前では、コンマを使用して名前と値をそれぞれ区切り、Name を引用符で囲みます。

例: 'Verbose','on'

.NET アセンブリに含める追加のファイルとフォルダー。文字ベクトル、string スカラー、string 配列、または文字ベクトルの cell 配列として指定します。パスは現在の作業ディレクトリを基準とした相対パス、または絶対パスにできます。

例: 'AdditionalFiles',["myvars.mat","data.txt"]

データ型: char | string | cell

.NET アセンブリの名前。文字ベクトルまたは string スカラーとして指定します。'AssemblyName' を名前空間として指定します。これは、companyname.groupname.component のようにピリオドで区切られたリストです。生成されたライブラリの名前は、ピリオドで区切られたリストの最後のエントリに設定されます。名前は文字で始まり、英字とピリオドのみが含まれる必要があります。

例: 'AssemblyName','mathworks.dotnet.mymagic'

データ型: char | string

アセンブリのバージョン。文字ベクトルまたは string スカラーとして指定します。このオプションは MWArray API でのみ使用します。

MATLAB Compiler SDK™ を使用したバージョン管理の詳細については、Versioningを参照してください。

例: 'AssemblyVersion','4.0'

データ型: char | string

データ ファイルを自動的に含めるためのフラグ。'on' または 'off'、もしくは数値または logical の 1 (true) または 0 (false) として指定します。'on' の値は true と等価であり、'off' の値は false と等価です。したがって、このプロパティの値を logical 値として使用できます。値は matlab.lang.OnOffSwitchState 型の on/off logical 値として格納されます。

  • このプロパティを 'on' に設定した場合、特定の関数 (loadfopen など) の入力として指定されるデータ ファイルは自動的に .NET アセンブリに含められます。

  • このプロパティを 'off' に設定した場合、データ ファイルは AdditionalFiles オプションを使用してアセンブリに追加する必要があります。

例: 'AutoDetectDataFiles','off'

データ型: logical

.NET クラスの名前。文字ベクトルまたは string スカラーとして指定します。ClassMap 入力を使用する場合、このオプションは指定できません。クラス名は .NET のクラス名の要件を満たしている必要があります。

既定値は、Files 引数にリストされている最初のファイルの名前に Class を追加したものです。

例: 'ClassName','magicsquareClass'

データ型: char | string

デバッグ シンボルを有効にするためのフラグ。'on' または 'off'、もしくは数値または logical の 1 (true) か 0 (false) として指定します。'on' の値は true と等価であり、'off' の値は false と等価です。したがって、このプロパティの値を logical 値として使用できます。値は、matlab.lang.OnOffSwitchState 型の on/off の logical 値として保存されます。

  • このプロパティを 'on' に設定した場合、コンパイルされたアーティファクトにデバッグ シンボル情報が含まれます。このオプションによって、mbuild からシステム コンパイラに適切なデバッグ フラグも渡されます。このデバッグ オプションを使用すると、MATLAB Runtime の初期化、関数呼び出し、または終了ルーチンのいずれでエラーが発生したかを特定できる箇所まで戻ることができます。このオプションでは、外部デバッガーで MATLAB ファイルをデバッグすることはできません。

  • このプロパティを 'off' に設定した場合、デバッグ シンボルは含まれません。これは既定のオプションです。

例: 'DebugBuild','on'

データ型: logical

デプロイ可能なアーカイブを組み込むためのフラグ。'on' または 'off'、もしくは数値または logical の 1 (true) か 0 (false) として指定します。'on' の値は true と等価であり、'off' の値は false と等価です。したがって、このプロパティの値を logical 値として使用できます。値は matlab.lang.OnOffSwitchState 型の on/off logical 値として格納されます。

  • このプロパティを 'on' に設定した場合、関数はデプロイ可能なアーカイブを .NET アセンブリに組み込みます。

  • このプロパティを 'off' に設定した場合、関数はデプロイ可能なアーカイブを別個のファイルとして生成します。

このオプションは MWArray API でのみ使用します。

例: 'EmbedArchive','off'

データ型: logical

アセンブリのリモート処理タイプを制御するためのフラグ。'on' または 'off'、もしくは数値または logical 1 (true) または 0 (false) として指定します。'on' の値は true と等価であり、'off' の値は false と等価です。したがって、このプロパティの値を logical 値として使用できます。値は matlab.lang.OnOffSwitchState 型の on/off logical 値として格納されます。

  • このプロパティを 'on' に設定した場合、この関数はリモート化可能なアセンブリをビルドします。

  • このプロパティを 'off' に設定した場合、この関数はリモート化可能ではないアセンブリをビルドします。

例: 'EnableRemoting','on'

データ型: logical

R2024b 以降

外部の AES 暗号化キー ファイルおよび MEX キー ローダー ファイルへのパス。char 行ベクトルまたは string スカラーの正確に 2 つのフィールドをもつスカラー struct として指定します。フィールド名はそれぞれ EncryptionKeyFileRuntimeKeyLoaderFile です。struct のフィールドはどちらも必須です。ファイル パスは現在の作業ディレクトリを基準とした相対パス、または絶対パスにできます。

たとえば、struct keyValueStruct を使用して暗号化キーを encrypt.key、ローダー ファイルを loader.mexw64 と指定します。

keyValueStruct.EncryptionKeyFile='encrypt.key'; keyValueStruct.RuntimeKeyLoaderFile='loader.mexw64'

暗号化キー ファイルは、サポートされている次のいずれかの形式でなければなりません。

  • バイナリ 256 ビットの AES キー、32 バイトのファイル サイズ

  • 16 進数でエンコードされた AES キー、64 バイトのファイル サイズ

MEX ファイル ローダーは実行時に復号化キーを取得します。これは次の引数をもつインターフェイスでなければなりません。

  • prhs[0] — 入力、固定値 'get' として指定される char 配列

  • prhs[1] — 入力、CTF コンポーネント UUID として指定される char 配列

  • plhs[0] — 出力、キーの形式に応じて 32 バイトの UINT8 数値配列または 64 バイトの 16 進数でエンコードされた char 配列

複数の CTF で同じキーを共有することは避けてください。

例: 'ExternalEncryptionKey',keyValueStruct

データ型: struct

.NET Framework 4.6.2 以降の任意のバージョンをマイナー バージョンのインクリメントに関係なくターゲットにするには、'4.0' と指定します。クロスプラットフォームの .NET 5.0 以降をターゲットにするには、'5.0' と指定します。

例: 'FrameworkVersion','5.0'

データ型: char | string

.NET アプリケーションとデプロイされた MATLAB コード間のデータ交換を処理するために使用されるデータ API。

  • mwarray — MWArray API。この API は .NET Framework で機能します。これは Windows での既定のインターフェイスです。

  • matlab-data — .NET 用の MATLAB データ API。この API では .NET 5.0 以降が必要です。これは macOS での既定のインターフェイスです。

MathWorks® では .NET 用の MATLAB データ API を使用することをお勧めします。

例: 'Interface','matlab-data'

データ型: char | string

デプロイ可能なアーカイブを難読化するためのフラグ。'on'/1/true または 'off'/0/false として指定します。この値は、matlab.lang.onoffSwitchState 型の on/off の logical 値として保存されます。

このプロパティを 'on' に設定した場合、デプロイ可能なアーカイブのフォルダー構造およびファイル名はエンド ユーザーに対して難読化され、.m.mlapp.p.mat、MLX、SFX、および MEX ファイルに含まれているユーザー コードおよびデータはアーカイブ内のユーザー パッケージに配置されます。また、すべての .m ファイルがパッケージ化の前に P ファイルに変換されます。

実行時に、MATLAB コードとデータはファイル システムに抽出されるのではなく、ユーザー パッケージから直接復号化されて読み込まれます。MEX ファイルは、一時的にユーザー パッケージから抽出されてから、読み込まれます。

追加のファイル タイプをユーザー パッケージに手動で含めるには、それぞれのファイル タイプを個別の拡張子タグでファイル matlabroot/toolbox/compiler/advanced_package_supported_files.xml に追加します。

以下はサポートされて "いません"

  • ver 関数

  • DLL などの外部ライブラリの呼び出し

  • アウトプロセスの MATLAB Runtime (MATLAB データ配列の C++ 共有ライブラリ)

  • アウトプロセスでの MEX ファイルの実行 (mexhostfevalmatlab.mex.MexHost)

  • R2023b より前: v7.3 以外の .mat ファイル

このオプションを有効にすることは、-j および -s を指定して mcc を使用するのと等価です。

このプロパティを 'off' に設定した場合、デプロイ可能なアーカイブは難読化されません。これは既定の動作です。

例: 'ObfuscateArchive','on'

データ型: logical

ビルド ファイルが保存される出力ディレクトリへのパス。文字ベクトルまたは string スカラーとして指定します。このパスは現在の作業ディレクトリを基準とした相対パス、または絶対パスにできます。

ビルド フォルダーの既定の名前は、アセンブリ名に dotNETAssembly を追加したものです。

例: 'OutputDir','D:\Documents\MATLAB\work\mymagicdotNETAssembly'

データ型: char | string

アセンブリに含まれる関数のサンプル .NET ドライバー ファイルを生成するために使用する MATLAB サンプル ファイル。文字ベクトル、string スカラー、string 配列、または文字ベクトルの cell 配列として指定します。パスは現在の作業ディレクトリを基準とした相対パス、または絶対パスにできます。ファイルには .m 拡張子が必要です。詳細と制限については、Create Sample Code to Call Exported Functionを参照してください。

例: 'SampleGenerationFiles',["sample1.m","sample2.m"]

データ型: char | string | cell

R2024b 以降

デプロイ可能なアーカイブに組み込む秘密鍵を指定する secret マニフェスト JSON ファイルへのパス。文字ベクトルまたは string スカラーとして指定します。このパスは現在の作業ディレクトリを基準とした相対パス、または絶対パスにできます。

MATLAB コードで関数 getSecretgetSecretMetadata、または isSecret を呼び出す場合、デプロイ可能なアーカイブに組み込む秘密鍵を JSON secret マニフェスト ファイルで指定しなければなりません。コードで getSecret を呼び出す場合に SecretsManifest オプションが指定されていないと、MATLAB Compiler™ は警告を発行し、<component_name>_secrets_manifest.json という名前の出力フォルダーにテンプレート JSON ファイルを生成します。"Embedded" フィールドで秘密鍵の名前を指定して、このファイルを修正します。

関数 setSecret はデプロイ可能ではありません。デプロイ可能なアーカイブに秘密鍵を組み込むには、アーカイブをビルドする前に MATLAB で setSecret を呼び出す必要があります。

シークレットを使用したデプロイの詳細については、Handle Sensitive Information in Deployed Applicationsを参照してください。

例: 'SecretsManifest','D:\Documents\MATLAB\work\mycomponent\mycomponent_secrets_manifest.json'

データ型: char | string

共有アセンブリの署名に使用する暗号化キー ファイルへのパス。文字ベクトルまたは string スカラーとして指定します。値が空の場合、関数はプライベート アセンブリを作成します。ファイル パスは現在の作業ディレクトリを基準とした相対パス、または絶対パスにできます。

例: 'StrongNameKeyFile','sgKey.snk'

データ型: char | string

含めるサポート パッケージ。次のオプションのいずれかとして指定します。

  • 'autodetect' (既定) — 依存関係の分析プロセスにより、必要なサポート パッケージが自動的に検出され、含められます。

  • 'none' — サポート パッケージは含められません。このオプションを使用すると、ランタイム エラーの原因となる可能性があります。

  • string スカラー、文字ベクトル、または文字ベクトルの cell 配列 — 指定されたサポート パッケージのみが含められます。インストールされている、または特定のファイルで使用されるサポート パッケージのリストを表示するには、compiler.codetools.deployableSupportPackages を参照してください。

例: 'SupportPackages',{'Deep Learning Toolbox Converter for TensorFlow Models','Deep Learning Toolbox Model for Places365-GoogLeNet Network'}

データ型: char | string | cell

ビルドの詳細を制御するためのフラグ。'on' または 'off'、もしくは数値または logical 1 (true) または 0 (false) として指定します。'on' の値は true と等価であり、'off' の値は false と等価です。したがって、このプロパティの値を logical 値として使用できます。値は、matlab.lang.OnOffSwitchState 型の on/off の logical 値として保存されます。

  • このプロパティを 'on' に設定した場合、MATLAB コマンド ウィンドウには、ビルド プロセス中のコンパイラ出力を示す進行状況情報が表示されます。

  • このプロパティを 'off' に設定した場合、コマンド ウィンドウには進行状況の情報は表示されません。

例: 'Verbose','on'

データ型: logical

出力引数

すべて折りたたむ

ビルド結果。compiler.build.Results オブジェクトとして返されます。Results オブジェクトは以下で構成されます。

  • 'dotNETAssembly' であるビルド タイプ

  • 以下のコンパイル済みファイルへのパス:

    • AssemblyName.dll

    • AssemblyNameNative.dll

    • AssemblyName_overview.dll

    • GettingStarted.html

  • 含まれているサポート パッケージのリスト

  • ビルド オプション。DotNETAssemblyOptions オブジェクトとして指定

  • 必須およびオプションの依存関係のリスト。Dependencies オブジェクトとして指定します。

制限

  • R2023a において: この関数は、Windows に加え、Linux® および macOS の各オペレーティング システムでサポートされています。

バージョン履歴

R2021a で導入

すべて展開する