我有一些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
答案 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自动化。看着升级到黄金以确认这确实是问题。
更新:是的,这就是问题所在。谢谢大家!