【问题标题】:Getting Method not found when running from Production but not from VB.Net 2015 IDE从生产运行但未从 VB.Net 2015 IDE 运行时找不到获取方法
【发布时间】:2018-12-03 17:01:25
【问题描述】:

我们有一个桌面 vb.net 2015,已经在生产环境中为许多客户运行了几年。

在我们对程序进行的最近一次更新中,我们现在得到了一个 Method not found 对于一个甚至不应该被调用的方法。

在 IDE 中不会失败。

我们有日志条目跟踪,可以看到它在哪里崩溃,但代码没有调用错误消息中的方法。

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

崩溃消息 添加行 err=438 找不到方法:'Int32 QBOAPIV3DT.QBAPIV3Cl.GetThisItemNdx(System.String ByRef, Int16, System.String ByRef, Boolean ByRef, System.Object ByRef, Intuit.Ipp.Data.Item ByRef, Intuit.Ipp .Data.ItemTypeEnum ByRef, Boolean ByRef, Microsoft.VisualBasic.Collection ByRef, Boolean ByRef, Boolean ByRef, Boolean ByRef, System.String ByRef, Int16 ByRef, System.String, System.String, System.String, Int32, Boolean, 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

再一次,它在 ide 中并没有失败,而且这个应用程序已经运行了很长时间。

任何想法。 谢谢

【问题讨论】:

  • .pdb 文件是否是最新的(如果有的话)?
  • 有 2 个 pdb 文件。一个是用于已被替换的过时类。替换旧版本的较新版本有一个旧日期。但这些都在代码输出文件夹中。实际运行的程序文件(x86)文件夹中没有 pdb 文件。
  • 我在 VS 2017 中重建了项目并且遇到了同样的问题。在 IDE 中工作,但在安装后不工作。我们确实使用了 Setup and Deploy 项目。
  • 它是否可以与“xcopy 部署”一起使用?

标签: vb.net


【解决方案1】:

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

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

由于我已经“修复”了这个问题,因此我将其标记为已回答,但我可能会提出另一个问题,说明为什么会发生这种情况。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-07-09
    • 2018-11-11
    • 2011-03-10
    • 1970-01-01
    • 2018-06-19
    • 1970-01-01
    • 2021-11-04
    • 2013-07-27
    相关资源
    最近更新 更多