LabVIEWで異なるバージョンの.NETアセンブリに変更する

更新しました Sep 20, 2023

使用製品

ソフトウェア

  • LabVIEW

プログラミング言語

  • Visual Basic .NET

問題

2つの異なるアセンブリを使用できるLabVIEWプログラムがあります。このプログラムでどちらのアセンブリバージョンをロードするか選択できるようにしたいと思います。アセンブリは両方とも全く同じ名前ですがバージョン番号が異なります。LabVIEWがロードするアセンブリを選択できるようにする方法はありますか?

解決策

オプション1: 一度に1つのアセンブリのみをGAC(Global Assembly Cache)にロードする

LabVIEWの動特性により、アプリケーションはGACに存在するアセンブリのみを検出してロードします。
 

メモ: 新しいアセンブリに追加のメソッドやプロパティが含まれている場合でも、LabVIEWコンストラクタノードを追加のメソッドやプロパティで正しく更新するには、オプション2または3で以下に示す構成ファイルを使用する必要があります。



 

オプション2: 両方のアセンブリがGACに存在する

.NET構成ファイルを使用して、LabVIEWプロジェクト/共有ライブラリ/スタンドアロンアプリケーション(実行ファイル)が使用するアセンブリのバージョンを選択できます。たとえば、LabVIEWプロジェクト名がTest.lvprojの場合、構成ファイル名はTest.lvproj.configになります。構成ファイルは、変更しようとしているLabVIEWプロジェクトと同じフォルダにあるはずです。 詳細については、.NETクライアントアプリケーションを構成する を確認してください。構成ファイルの例を以下に示します。


 

メモ: 複数の古いバージョンの1つから新しいバージョンにリダイレクトすることは可能です。これは、bindingRedirectタグ内でoldVersionの引数を単一のバージョン番号ではなくバージョンの範囲として指定することで実現できます。例えば、n.n.n.n - n.n.n.nと記載します。



 

オプション3: 両方のアセンブリがGACに存在する必要がない

.NET構成ファイルを使用して、LabVIEWプロジェクト/共有ライブラリ/スタンドアロンアプリケーション(実行ファイル)に使用するアセンブリのバージョンを選択することもできます。 詳細については、.NETクライアントアプリケーションを構成する を参照してください。
 

アセンブリを選択するために特定のフォルダを参照している場合は、次の構成を使用します。上記の構成との唯一の違いは、アセンブリのパスが<probing privatePath="Assembly\ver2"/>であることです。ここで、Assembly\ver2はプロジェクト内のサブフォルダです。このパスは、構成ファイルが存在する場所からの相対パスでなければなりません。VIが最初に特定のフォルダを他のフォルダよりも先に検索するように強制するため、正しいバージョンが選択されます。



 

構成ファイルを使用する場合の、考慮事項は以下のとおりです。
 

  • 構成ファイルは、LabVIEW 8.5以降で動作します。
  • assemblyIdentity name="Test" - Testはアセンブリ名を表し、正しく機能するためにはアセンブリ名と完全一致する必要があります。
  • publicKeyToken="xee7d93a67000dr7" - アセンブリを一意に識別するために使用されます。SNツールを使用して生成されます。
  • oldVersion=" "newVersion=" " - 現在使用しているバージョンと、使用したいバージョンを表します。

 

構成ファイルを正しく使用する手順は、以下のとおりです。
 

  1. LabVIEWコードが1つのアセンブリバージョンで正しく動作することを確認します。LabVIEWプロジェクトとLabVIEWを閉じます。
  2. 構成ファイルを開き、コードを編集して現在のバージョンから使用したいバージョンに変更します。
  3. LabVIEWとプロジェクトを再度開き、LabVIEWコードを実行します。ここで、LabVIEWコードは指定したアセンブリバージョンを使用しています。

 

ヒント: LabVIEW 2011以降では、メモリ内の.NETアセンブリダイアログボックスを使用して、LabVIEWが正しいバージョンのアセンブリをロードすることを確認できます。