LabVIEW載入 .NET Assemblies 時出錯

更新 Jan 14, 2020

產品資訊

Software

  • LabVIEW

Operating System

  • Windows

其他

  • .NET Assemblies

問題敘述

嘗試在LabVIEW中載入 .NET assemblies 時,遇到以下錯誤訊息之一:

An error occurred trying to load the assembly


The version of the assembly you requested was automatically promoted to a later version by the .NET runtime engine.

解決方案

  • 此問題可能與對assemblies 設定的安全限制有關。有兩種方法可以使遠端的 源assemblies獲得完全信任:透過允許LabVIEW通過.NET配置文件中(configuration file)的token訪問assemblies,或透過手動允許單個assembly。

 

.NET configuration file

請按照以下步驟操作,以允許LabVIEW可存取所有.NET assembly。請注意,這種方法存在潛在的安全風險。

  1. 使用文字編輯器創建包含以下內容的文件:
    <?xml version ="1.0"?>
    <configuration>
      <runtime>
        <loadFromRemoteSources enabled="true" />
      </runtime>
    </configuration>
  2. 將此檔案另存為LabVIEW.exe.config在與執行位置所在位置同一路徑下;例如,在與LabVIEW.exe同一路徑下,它通常位於C: \ Program Files(x86)\ National Instruments \ LabVIEW 2018 \ 透過此操作,電腦可以信任載入到LabVIEW中的所有assemblies。您還可以參考 Configuring a .NET Client Application - LabVIEW 2017 Help ,以了解有關如何將configuration files (設置文件) 應用於LabVIEW Project檔案,shared libraries 或 stand-alone 可執行檔的更多資訊。請注意,這種縮小的範圍相比於透過允許載入遠端assemblies,降低了潛在的安全風險。
手動允許存取權限
以下設定僅在Windows 7和更高版本中才可行。 在LabVIEW失敗加載assembly後 ,Windows在該assembly屬性增加了一個選項,以解除對該檔案的封鎖:
勾選中Unclock ,然後點擊 OK 以給予assemblies完全信任。
  • 此問題也可能是由於無法找到相關的assemblies。確保要增加到VI中的所有assemblies和依賴項(dependies)都與增加該assemblies的VI位於同一專案目錄中。

相關資訊

LabVIEW 2013預設使用.NET 4.0,而更高版本的LabVIEW預設使用.NET框架的最新版本 。載入針對任何早期版本的.NET Framework的assemblies時,LabVIEW會自動將其升級至更高版本。

使用.NET 4.0,引入了新的安全模型。這種新的安全模型自動授權對本機可用assemblies的完全信任,但不授權從遠端資源(如Internet,網路位置或通過電子郵件)獲得的assemblies的完全信任。如果LabVIEW在缺少信任的情況下嘗試存取此類assemblies的dll檔案並因此被拒絕存取,則LabVIEW將回傳錯誤: An error occurred trying to load the assembly.
注意:當您嘗試將64位.NET dll載入到32位版本的LabVIEW中時,也可能出現此錯誤訊息,反之亦然。


有關載入.NET 2.0、3.0或3.5 assemblies的資訊,請參考 Loading .NET 2.0, 3.0, and 3.5 Assemblies in LabVIEW - LabVIEW 2017 Help 以載入.NET 2.0、3.0或3.5 assemblies。請注意,使用.NET assemblies時,建議使用LabVIEW project而不是獨立的VI。

注意:當使用任何虛擬化解決方案(例如Parallels Desktop,VMWare Fusion或Oracle VirtualBox)在虛擬機中運行Windows時,新的安全模型會將共享目錄(例如,以/ psf\\ vmware-host \開頭的文件夾)視為遠端來源,因為這些來源是透過網路連接存取的。您還需要授權這些目錄中的assemblies完全信任。

本文是否有幫助?

無幫助