在“向Microsoft发送错误报告”出现之前,代码运行没有错误

时间:2011-03-28 14:35:04

标签: .net vb.net ole

我有一些vb.net代码,应该使用Teklynx LabelView软件打印出标签(之前我曾经使用过它。)

问题是,它在Dev机器上运行正常,但是当我在最终用户的PC上运行它时,我没有得到任何错误消息,直到它完全消失了“向Microsoft发送错误报告”消息。

我该怎么解决这个???

相关代码:

Shared Function PrintLabels(ByVal itemDescription As String, ByVal starting As String, ByVal ending As String, ByVal qty As Integer) As Boolean
        'Create "Document" (Label) object

        'Close all open lv.exe processes
        Dim pProcess() As Process = System.Diagnostics.Process.GetProcessesByName("lv")

        For Each p As Process In pProcess
            p.Kill()
        Next

        Dim Lbl As Object
        Lbl = CreateObject("Lblvw.Document")

        Lbl.Open(labelFileName)

        Dim barcodeVal As String
        Dim labelText As String

        Try

            Dim infoArray As String()
            infoArray = itemDescription.Split(New Char() {","c})

            labelText = infoArray(1).ToString().Trim()
            barcodeVal = infoArray(2).Trim() & starting & ending

            'Load label in ReadOnly mode
            Lbl.Open(labelFileName, True)

            'Get field information
            Dim Flds As Object

            Flds = Lbl.LabelFields

            Flds.Item("TEXT1").Value = labelText
            Flds.Item("BARCODE1").Value = barcodeVal

            Lbl.PrintLabel(qty)

            Lbl = Nothing
            barcodeVal = Nothing
            labelText = Nothing

            Return True

        Catch ex As Exception

            If printStatements Then
                MsgBox("Error Message: " & ex.Message.ToString())
            End If

            Using writer As New StreamWriter(errorLog, True)
                writer.AutoFlush = True
                writer.WriteLine()
                writer.WriteLine(DateTime.Now.ToString() & ": " & ex.Message)
            End Using

            Lbl = Nothing
            barcodeVal = Nothing
            labelText = Nothing
            Return False

        End Try
    End Function

5 个答案:

答案 0 :(得分:2)

检查您要构建的.NET版本以及客户端在其计算机上的.NET版本。

如果用户的.NET版本较低,您使用的某些内容可能无法与用户兼容。

答案 1 :(得分:1)

别猜这个。实现AppDomain.CurrentDomain.UnhandledException事件并记录或显示e.ExceptionObject.ToString()的值。它告诉你究竟出了什么问题,用堆栈跟踪向你展示如何出错。

答案 2 :(得分:0)

除了@Jack提到的.NET版本之外,请注意32位与64位。如果标签软件仅为32位构建,则如果您在Visual Studio中定位“任何CPU”并且在64位计算机上运行它,则程序将无法运行。在这种情况下,CLR将编译为64位,然后将无法链接到32位库。 (但不知道软件,我不知道这是否会影响你。)

答案 3 :(得分:0)

听起来你必须正确安装Teklynx LabelView组件。如果它是一个COM组件(你用“OLE”标记了这个问题并且你使用的是CreateObject),它将需要一个注册表项。复制和粘贴bin \将无法正常工作。 Teklynx文档中有关重新分发组件的内容是什么?我从来没有在.NET中注册COM组件......只能在VB6中注册设置和安装。处理部署向导。要进行测试,请找一台干净的客户端PC并使用regsrv32.exe手动注册Teklynx .DLL。

答案 4 :(得分:0)

看起来像是Teklynx LabelView软件的不同版本。此代码以前在v7 Gold版本上运行,但在某些时候它已升级到v8.5 Pro版本,它不支持OLE自动化。看着升级到黄金以确认这确实是问题。

更新:是的,这就是问题所在。谢谢大家!