2011-03-28 2 views
1

(내가 전에 작업을 했어.)코드까지 오류없이 실행되어 "Microsoft에 오류 보고서 보내기"가 나는 Teklynx LabelView와 소프트웨어를 사용하여 라벨을 인쇄 할 몇 가지 vb.net 코드가

문제 그것은 Dev 컴퓨터에서 정상적으로 실행되지만 최종 사용자의 PC에서 실행할 때 "Microsoft에 오류보고 보내기"메시지와 함께 완전히 사라질 때까지 오류 메시지가 표시되지 않습니다.

이 문제를 어떻게 해결할 수 있습니까?

관련 코드 : 당신이 구축하고 .NET의 버전 클라이언트가 자신의 컴퓨터에이되는 .NET의 버전을

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

배포를 위해 어떤 노력을 했습니까? –

+0

\ bin \ Release \ 폴더를 복사하고 exe를 실행했습니다. – MAW74656

+0

GAC에 설치되어있는 3rdparty 구성 요소를 사용하고 있으므로 확인이 어려울 수 있습니다. 답장을 참조하십시오 + 컨트롤의 재배포 가능 항목을 배포했는지 확인하십시오 (Teklinx) –

답변

0

Teklynx LabelView 소프트웨어의 다른 버전처럼 보입니다. 이 코드는 이전에 v7 Gold Edition에서 사용되었지만 일부 시점에서는 OLE 자동화를 지원하지 않는 v8.5 Pro Edition으로 업그레이드되었습니다. 이것이 실제로 문제인지 확인하기 위해 Gold로 업그레이드하는 방법을 살펴보십시오.

업데이트 : 예, 이것이 문제였습니다. 모두에게 감사드립니다!

2

확인합니다.

사용자가 .NET의 버전이 낮 으면 사용중인 것과 호환되지 않을 수 있습니다.

+0

대상 플랫폼을 어떻게 확인합니까? 옵션은 VS 내에서 C# (내가 익숙한)과 다른 위치에 있습니다. – MAW74656

+0

도구 모음에서 ... 프로젝트> (프로젝트) 속성> 컴파일> 고급 컴파일 옵션> 대상 프레임 워크 (마지막 옵션) – Jack

+0

대상을 클라이언트 전용 하위 집합 .net 버전 2.0으로 변경했습니다. 효과가 없습니다. – MAW74656

0

@Jack이 언급 한 .NET 버전 외에도 32 비트와 64 비트를 알고 있어야합니다. 레이블 소프트웨어가 32 비트 전용으로 제작 된 경우 Visual Studio의 "Any CPU"를 대상으로하고 64 비트 컴퓨터에서 실행중인 경우 프로그램이 실행되지 않습니다. 이 경우 CLR은 64 비트로 컴파일 된 다음 32 비트 라이브러리에 연결할 수 없습니다. (그러나 소프트웨어에 대해 알지 못하더라도이 문제가 귀하에게 영향을 미치는지는 알 수 없습니다.)

+0

소프트웨어가 WinXP 32 비트에서 실행 중입니다. – MAW74656

1

이것으로 추측하지 마십시오. AppDomain.CurrentDomain.UnhandledException 이벤트를 구현하고 e.ExceptionObject.ToString() 값을 기록하거나 표시하십시오. 잘못 된 부분을 알려주는 스택 추적과 함께 잘못된 내용을 정확히 알려줍니다.

+0

훌륭한 사운드! 이 이벤트는 어떻게 구현합니까? 당신이 설명하거나 기사를 가르쳐 주시겠습니까? 나는 전에 이것을 사용한 적이 없다. – MAW74656

+0

기본 폼의 Load 이벤트 또는 Application에서 AddHandler를 사용하십시오. 시작 –

+0

구문? 어떻게 사용합니까? – MAW74656

0

Teklynx LabelView 구성 요소를 올바르게 설치해야합니다. COM 구성 요소 (이 질문에 "OLE"로 태그를 지정하고 CreateObject를 사용하는 경우)에는 레지스트리 항목이 필요합니다. bin \을 복사하여 붙여 넣으면 \ 작동하지 않습니다. Teklynx 문서에서 구성 요소를 재배포하는 것에 관해 무엇을 말합니까? .NET에서 COM 구성 요소를 등록 할 필요가 없었습니다 ... VB2에서만 다시 & 설치 마법사가 처리했습니다. 테스트를 위해 클린 클라이언트 PC를 찾고 regsrv32.exe를 사용하여 Teklynx .DLL을 수동으로 등록하십시오.

관련 문제