在LabVIEW中加载.NET程序集时出错

更新 Sep 14, 2021

适用于

软件

  • LabVIEW

操作系统

  • Windows

问题详述

当我尝试在LabVIEW中加载.NET程序集时,收到以下错误消息之一:

尝试加载程序集时发生错误
Error1.png

您请求的程序集版本由.NET运行引擎自动提升为更高版本。
Error2.png
 

解决方案

此错误可能由不同的原因引起。 本文将涵盖最常见的原因并针对每个原因提出解决方案。
 

安全限制

此问题可能与对 .NET 程序集设置的安全限制有关。 有两种方法可以授予远程来源的程序集完全信任:使用 LabVIEW 配置文件或手动允许单个程序集。

LabVIEW .NET 配置文件

按照以下步骤允许 LabVIEW 访问所有 .NET 程序集。 请注意,这种方法会带来潜在的安全风险。
  1. 使用文本编辑器创建包含以下文本的文件:
<?xml version ="1.0"?>
<configuration>
    <runtime>
        <loadFromRemoteSources enabled="true" />
    </runtime>
</configuration>
  1. 将该文件保存为 LabVIEW.exe.config,放在 LabVIEW.exe 文件的同一目录中。 该目录通常位于 C:\Program Files (x86)\National Instruments\LabVIEW 20xx\
  2. 您还可以参考配置.NET客户端应用程序,了解有关如何将配置文件应用于 LabVIEW 项目、共享库或独立可执行文件的详细信息。 请注意,这种缩小的范围通常允许加载远程程序集,从而降低了潜在的安全风险。

 

手动授予访问权限

以下仅适用于 Windows 7 及更高版本。 如果 LabVIEW 在加载程序集时失败,Windows 将在文件的属性上添加一个选项来取消阻止程序集,如下图所示。 选中取消阻止并单击确定以授予程序集完全信任。
Access.png
 

缺少依赖项

如果 LabVIEW 无法找到相关程序集,也可能会出现此问题。 确保您尝试添加到 VI 的所有程序集和依赖项与要添加程序集的 VI 位于同一项目目录中。 要检查依赖项,您可以使用随 Microsoft Visual Studio 安装的 IL 反汇编程序 (ILDASM.exe) 查看程序集中嵌入的清单。
 

使用 .NET 核心

出现此错误的另一个原因可能是 .NET 程序集是使用 .NET Core 而不是 .NET Framework 构建的。 由于 LabVIEW 使用 .NET Framework/CLR 4.0,LabVIEW 不支持 .NET Core 程序集。 LabVIEW 可以访问与随 LabVIEW 一起安装的 .NET CLR 4.0 相关的类库程序集。

相关信息

LabVIEW 2013 默认使用 .NET 4.0,而更高版本的 LabVIEW 默认使用更新版本的 .NET framework。 加载面向 .NET Framework 任何早期版本的程序集时,LabVIEW 会自动将程序集升级到更高版本。 有关加载 .NET 2.0、3.0 或 3.5 程序集的信息,请参阅 LabVIEW 中的加载 .NET 2.0、3.0 和 3.5 程序集。 请注意,在使用 .NET 程序集时,建议使用 LabVIEW 项目而不是独立 VI。

.NET 4.0 引入了新的安全模型。 这种新的安全模型会自动授予对本地可用程序集的完全信任,但不会授予从 Internet、网络位置或通过电子邮件等远程来源获得的程序集的完全信任。 如果 LabVIEW 尝试访问此类程序集的 DLL 文件而失去信任并因此被拒绝访问,LabVIEW 将返回错误。 当使用 Parallels Desktop、VMWare Fusion 或 Oracle VirtualBox 等任何虚拟化解决方案在虚拟机内运行 Windows 时,新的安全模型将共享目录(例如以 /psf 或 \\vmware-host\ 开头的文件夹)视为远程源 ,因为这些是通过网络链接访问的。 您还需要授予这些目录中的程序集完全信任。

当您尝试将 64 位 .NET DLL 加载到 32 位版本的 LabVIEW 时,也可能会出现此错误消息,反之亦然。