Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 类型在运行时变得未定义_Vb.net_Dll_Types_Reference_Runtime Error - Fatal编程技术网

Vb.net 类型在运行时变得未定义

Vb.net 类型在运行时变得未定义,vb.net,dll,types,reference,runtime-error,Vb.net,Dll,Types,Reference,Runtime Error,我正在建立一个项目,使用一个名为Modbus的开源Modbus库读取伺服驱动参数 我的VB.net项目包括对modbus.dll和log4net.dll的引用。 我可以使用intellisense调用名称空间modbus中的方法,并且不会出现错误。但是当我在IDE中运行此代码时 Imports System.IO.Ports Imports Modbus Public Class Form1 Private Sub Form1_Load(ByVal sender As System.Obj

我正在建立一个项目,使用一个名为Modbus的开源Modbus库读取伺服驱动参数

我的VB.net项目包括对modbus.dll和log4net.dll的引用。

我可以使用intellisense调用名称空间modbus中的方法,并且不会出现错误。但是当我在IDE中运行此代码时

Imports System.IO.Ports
Imports Modbus

Public Class Form1

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs)         Handles MyBase.Load
    Dim MyPort1 As New SerialPort("Com1")

    MyPort1.BaudRate = 9600
    MyPort1.DataBits = 8
    MyPort1.Parity = Parity.None
    MyPort1.StopBits = StopBits.One
    MyPort1.Open()

    Dim myMB As Device.ModbusSerialMaster
    myMB = Device.ModbusSerialMaster.CreateAscii(MyPort1)

        Dim slaveId As Byte = 1
        Dim StartAddress As UShort = 100
        Dim registers() As UShort
        Dim NumberofRegisters As UShort = 5

        registers = myMB.ReadHoldingRegisters(slaveId, StartAddress, NumberofRegisters)



    End Sub
End Class
我收到的错误是Modbus名称空间中的类型未定义


为什么在编码时定义了这些类型,并且我可以使用Intellisense查找我的方法,但在运行时它们变得未定义?

可能是因为您引用的DLL的位置。由于它位于
bin\Debug
中,因此在重新编译时可能会被覆盖。当您将项目作为发行版而不是调试版运行时,是否会得到相同的行为?

我将框架版本从4.0更改为3.5,并且不再出现错误。这个dll是几年前编写的,我想在一个更新的框架中可能有一些东西不能正确运行


编辑:从4.0客户端配置文件更改为任何常规框架也可以。dll引用了客户端配置文件没有的内容。有关VS2010中此错误的更多信息,请参见顶部的链接。

我尝试将DLL放在多个位置,包括C驱动器上的目录和主项目文件夹中,我得到了相同的结果。如果我将其作为发行版运行,我也会遇到同样的错误。在运行之间是否尝试过清理/重建?不是这样,在4.0项目中使用3.5程序集不是问题。我同意不应该这样,但我没有更改有关代码或引用的任何内容。我只在3.5框架中创建了一个新项目,它成功了。是的,就是这样。至少看看我给你的链接。刚刚看到的链接…是的,从4.0客户端配置文件更改为常规4.0也解决了这个问题。因此,dll使用的客户端配置文件中没有包含某些名称空间?可能与