从生产运行但从VB.Net 2015 IDE运行时找不到获取方法

时间:2018-12-03 17:01:26

标签: vb.net

我们有一个台式机vb.net 2015,该版本已在许多客户的生产环境中运行了几年。

在我们对该程序进行的最新更新中,我们现在得到了一个根本找不到的方法,该方法甚至都不应该被调用。

它在IDE中不会失败。

我们拥有日志条目跟踪,可以看到它崩溃的位置,但是代码未在错误消息中调用该方法。

该代码为方法(而不是失败的方法)开具发票,它要做的第一件事就是创建一个已输入的跟踪条目。但这不会显示在日志中。它确实有崩溃的日志条目。

崩溃消息 是否添加行err = 438找不到方法:'Int32 QBOAPIV3DT.QBAPIV3Cl.GetThisItemNdx(System.String ByRef,Int16,System.String ByRef,布尔ByRef,System.Object ByRef,Intuit.Ipp.Data.Item ByRef,Intuit.Ipp .Data.ItemTypeEnum ByRef,布尔ByRef,Microsoft.VisualBasic.Collection ByRef,布尔ByRef,布尔ByRef,布尔ByRef,System.String ByRef,Int16 ByRef,System.String,System.String,System.String,Int32,Boolean,布尔,Boolean,System.String,Boolean ByRef,System.String ByRef,System.Collections.Generic.List`1 ByRef,System.String ByRef)'

请注意,fnDebug函数仅写入日志条目。

...

fnDebug("Do Add Line Doing Invoice Add (2) QBO=" & DoingQBOE & " B=" & B)  ' [[ 2018-12-03 B??? ]]
            WhereAT = "DAL, Invoice Invoice line "  ' [[ 2018-12-03 B??? ]]
            If Not InvoiceLineAddSub(pName:=CustomerNm, pItem:=pItem, pQty:=pQtyStr, pPrice:=pPriceStr, pAmt:=pAmtStr, pDesc:=Desc,
                        pServiceDate:=MyServiceDateStr, pLineClass:=pClass, pDoTax:=False, pPending:=(pPendingStr.ToUpper.StartsWith("T")),
                        pPO:=ThePONum, pBlankLine:=B, pOutReason:=pOutReason) Then
                i = i
                GoTo ExitFunction
            Else
...
End if

并且在单独的模块中,fnDebug不会创建日志条目

 Public Function InvoiceLineAddSub(ByVal pName As String, Optional ByVal pDate As String = "", Optional ByVal pPO As String = "", Optional pClass As String = NIL, _
            Optional ByVal pItem As String = "", Optional ByVal pQty As String = "", Optional ByVal pPrice As String = "", _
            Optional ByVal pAmt As String = "", Optional ByVal pDesc As String = "", _
            Optional ByVal pIsTaxableStr As String = "", Optional ByVal pServiceDate As String = NIL, _
            Optional ByVal pLineClass As String = NIL, Optional ByVal pCFAR As String = Nothing, _
            Optional ByVal pAccnt As String = NIL, Optional ByVal pDoTax As Boolean = True, _
            Optional ByVal pPending As Boolean = False, Optional ByVal pShipMethod As String = NIL, _
            Optional ByVal pGroup As Boolean = False, Optional ByVal pTaxCode As String = NIL, _
            Optional ByVal pUOM As String = NIL, Optional ByVal pBlankLine As Boolean = False, _
            Optional ByVal pToEmail As Boolean = False, Optional pToPrint As Boolean = False, _
            Optional ByRef pOutInItemListId As String = NIL, _
            Optional ByRef pOutReason As String = NIL) As Boolean
        Dim i As Short
        Dim Ss, s, Sss As String
        Dim FunRC As Boolean
        Dim Dbl As Double
        On Error GoTo ErrX
        fnDebug("Invoice Line Add Sub Entered name=" & pName & " Email=" & pToEmail & " Print=" & pToPrint & " Item=" & pItem & " QBO=" & DoingQBOE)

...
End Function

同样,它在思想上也不会失败,并且该应用程序已经运行了很长时间。

任何想法。 谢谢

1 个答案:

答案 0 :(得分:0)

我能够通过删除DLL(甚至不必调用它)并再次重新添加它来解决此问题。

由于该运行此DLL根本不应该使用,因此尚不清楚原因。因此,如果有人能告诉我为什么在代码未告知要调用DLL类的情况下为什么要调用DLL类,我将非常感激。

自从我“解决”这个问题后,我将其标记为已回答,但是我可能会再问一个问题。