メモ 以下の内容は、.NET Frameworkのみに適用されます。LabVIEW 2025 Q1以前、.NET Frameworkアセンブリは.NET Interopアセンブリと呼ばれていました。

他のプログラムから.NET Frameworkアセンブリを呼び出す

.NET Frameworkアセンブリをビルドすると、.NETをサポートする他のプログラムからアセンブリを呼び出すことができます。ただし、他のプログラムが実行されるコンピュータが以下の要件および推奨事項を満たしていることを確認します。

  • .NET Frameworkアセンブリを実行するコンピュータにLabVIEWランタイムエンジンをインストールする必要があります。LabVIEWランタイムエンジンは、.NET Frameworkアセンブリと共に配布することができます。(Windows) LabVIEWランタイムエンジンは、インストーラに含めることもできます。
  • NIは、LabVIEWがアプリケーションをビルドする際に使用したバージョン以降の.NET Frameworkを.NET Frameworkアセンブリ用のターゲットコンピュータにインストールすることを推奨します。
  • LabVIEW開発環境外の.NET Frameworkアセンブリを呼び出す場合は、Microsoft Visual StudioプロジェクトでNationalInstruments.LabVIEW.Interop.dllを参照する必要があります。LabVIEWランタイムエンジンは、このDLLを自動的にNational Instruments\Shared\LabVIEW Run-Timeディレクトリにインストールします。オプションとして、NationalInstruments.LabVIEW.Interop.dllを手動でGAC (Global Assembly Cache) にインストールすることができます。このDLLをGACにインストールするには、.NETアセンブリに厳密な名前のキーファイルで署名する必要があります。
  • デバッグ可能な.NET Frameworkアセンブリを作成する場合、LabVIEWは構成ファイル (ini) をアセンブリと同じディレクトリに配置します。別のプログラムでアセンブリをデバッグしたい場合、.iniファイルをアセンブリと一緒に配布する必要があります。

.NET FrameworkアセンブリのLabVIEWデータタイプ

.NET Frameworkアセンブリをビルドすると、LabVIEWは、シンプルなデータタイプ (数値、ブール値、文字列、シンプルデータタイプの配列など) を対応する.NETデータタイプに直接変換します。しかし、LabVIEW特有のデータタイプ (クラスタ、波形、複素数、refnum、LabVIEWクラスなど) は、生成されたアセンブリにおいて新しい.NETデータタイプに定義される必要があります。

LabVIEWデータが.NETデータタイプに変換される方法は、.NET Frameworkアセンブリをビルドして、Microsoft Visual Studioなどの.NETプログラミング環境でアセンブリのマニフェストを表示することにより確認できます。Microsoft Developer Network (MSDN)から使用可能なMSIL Disassemblerツールを使用して、生成されたアセンブリを表示することもできます。しかし、以下のセクションでは、LabVIEWがクラスタ、列挙タイプ制御器、LabVIEWクラスを.NETデータタイプに変換する方法について簡単に説明します。

クラスタおよび列挙体

クラスタおよび列挙体は、要素が対応する.NETストラクチャに変換されます。クラスタまたは列挙体に対応する.NETストラクチャの名前は、以下の規則に基づいて指定されます。

  • タイプ定義または指定タイプ定義として定義されたクラスタおよび列挙体―タイプ定義または指定タイプ定義のラベルが.NETストラクチャの名前となる
  • その他すべてのクラスタおよび列挙体―.NETストラクチャの名前はLVCluster_#またはLVEnum_#となる

LabVIEWクラス

LabVIEWクラスに属するVIはエクスポートできます。LabVIEWでは、これらのVIの入力は所有者であるLabVIEWクラスである必要があります。このため、これらのVIを.NET Frameworkアセンブリにエクスポートすると、アセンブリ内に同等の.NETクラス定義が作成される必要があります。.NETクラス定義には、各メンバーVIの静的メソッドが含まれます。これらの各静的メソッドには、新たに定義された.NETクラスのインスタンスがパラメータとして必要です。所有者LabVIEWクラスのプライベートデータはエクスポートされません。

エクスポートされるメソッドVIのLabVIEWクラスの継承ストラクチャもエクスポートされます。生成された.NETクラスは、同じ継承ストラクチャです。

LabVIEWエラー

VIの.NETメソッドを生成する場合、エラー入力およびエラー出力クラスタは新しいメソッドのパラメータとしてエクスポートされません。代わりに、新しいメソッドは、実行中にエラーが発生すると.NETの例外を出力します。この例外には、エラークラスタと同じ情報が含まれています。