【问题标题】:The type initializer for '[Modulename]' threw an exception'[Modulename]' 的类型初始值设定项引发异常
【发布时间】:2014-04-10 03:35:03
【问题描述】:

我有这个新的 vb.net 项目 (MedicalCost) 出现此错误“'MedicalCost.Constants' 的类型初始化程序引发了异常。”运行子程序时。我以前在以前的项目中已经这样做过,当我在我的模块上声明一个公共变量时一切正常,但现在在我当前的项目中它不起作用。

这是我的模块上的代码(常量):

 Imports System.Data.Sql
    Imports System.Data.SqlClient
    Imports System.Data.Odbc
    Imports System.Windows.Forms

    Public Module Constants
        Public ppiconn As New SqlConnection("Dsn=pandiman2002connectdsn;server=ppi;uid=sa;database=Pandimandata2002")
        'Dsn=pandiman2002connectdsn;description=PPI Database;uid=sa;app=Microsoft® Visual Studio® 2010;wsid=CRWUSER17-PC;database=Pandimandata2002
        Public da As New SqlDataAdapter
        Public comm As New SqlCommand
        Public dr As SqlDataReader
        Public ds As New DataSet

        Public x As String


    End Module

当我在我的 frm_add 上运行 sub 时

这是我的代码

Sub search_crew()

    Try
        x = "(isnull(ltrim(rtrim(firstname)),'') + ' ' + isnull(ltrim(rtrim(mi)),'') + ' ' + " _
               & "isnull(ltrim(rtrim(lastname)),'') like '%" & Replace(searchbox.Text, " ", "%") & "%' " _
               & " or isnull(ltrim(rtrim(lastname)),'') + ' ' + isnull(ltrim(rtrim(mi)),'') + ' ' + " _
               & "isnull(ltrim(rtrim(firstname)),'') like '%" & Replace(searchbox.Text, " ", "%") & "%' " _
               & "or legal_records.caseno like '%" & UCase(searchbox.Text) & "%')"

        ppiconn.Close()
        ppiconn.Open()
        Pandimandata2002DataSet.EnforceConstraints = False
        da = New SqlDataAdapter(select_tblcrw & "where " & x, ppiconn)
        da.Fill(Pandimandata2002DataSet.tblCrew)
        da.Dispose()
        ppiconn.Close()
    Catch ex As Exception
        MsgBox(ex.Message)
    End Try

End Sub

我注意到从模块声明的任何变量都是此错误“'MedicalCost.Constants' 的类型初始化程序引发异常”的原因。发生。

谁能帮帮我。我已经花了 1 个小时来寻找这个错误,但没有任何帮助。 天呐!

【问题讨论】:

    标签: vb.net exception module


    【解决方案1】:

    问题几乎可以肯定是下面这行代码

    Public ppiconn As New SqlConnection("Dsn=pandiman2002connectdsn;server=ppi;uid=sa;database=Pandimandata2002")
    

    这里的关键是错误消息中的type initializer。当静态数据的初始化引发异常时,就会发生这种情况。对于 VB.Net,这映射到 Modules 的字段或 Class 的 Shared 字段。在这种情况下,错误指向Constants,这是唯一的初始化程序,因此它很可能是罪魁祸首。

    为了找出发生这种情况的原因,您需要找到触发type initializer 错误的异常。只需调试到​​应用程序等待错误,展开InnerException 属性,它应该包含真正的错误

    【讨论】:

    • 谢谢!!!我得到了它!发现“{”不支持关键字:'dsn'。“}”中的真正错误我在连接上删除它并且它有效!再次感谢!
    【解决方案2】:

    在用于公共定义的模块中的初始化程序有这个问题——将初始化程序移动到使用它的表单——仍然是公共的。问题消失了。

    【讨论】:

      【解决方案3】:

      当我更新对第 3 方 DLL 的引用时,我出现了这个错误。在已安装的程序中创建主窗体时出现错误“{myForm} 的类型初始化程序引发异常”,并且程序停止并显示初始屏幕。调试器没有帮助,因为程序在调试器中正确运行。事实证明,我的安装程序没有包含 DLL 的一些更新的第 3 方依赖项。一旦安装程序识别出更新的依赖项并将其添加到程序文件夹中,程序就会正确运行。

      【讨论】:

        猜你喜欢
        • 2011-05-22
        • 2012-09-06
        • 2014-01-23
        • 1970-01-01
        • 1970-01-01
        • 2018-07-02
        • 2012-09-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多