2012-05-26 5 views
2

안녕하세요 저는 다른 컴퓨터 (광산 외부)에서 구현할 준비가 된 WinForms 응용 프로그램을 만들었습니다. 나는 그것을 다른 곳에서 돌리는 데 문제가있다.응용 프로그램을 시작할 수 없습니다.

static void Main() 
{ 
    try 
    { 
     Application.EnableVisualStyles(); 
     Application.SetCompatibleTextRenderingDefault(false); 
     Application.Run(new mainForm()); 
    } 
    catch(SystemException ex) 
    { 
     MessageBox.Show("Error: ", ex.ToString()); 
    } 
} 

아무것도은 (는) try/catch의 추가 외에 여기에 편집하지 :

Program.cs 파일에서 나는 문제가 무엇인지 볼이 있어요. 이 Program.cs에 문제가 있음을 알고 있기 때문에 일련의 메시지 상자가 다른 단계의 MainForm_Load() 블록에 표시되도록 설정되어 있습니다. 응용 프로그램이 그 중 하나에 도달하지 못합니다.

이것은 아마도 매우 모호하게 들릴지 모르지만이 응용 프로그램이 내 랩톱이 아닌 다른 곳에서 작동하도록 할 수는 없습니다. 내가 가지고있는 Usings 중 하나일까요? 필요한 경우 포함시킬 수 있습니다.

편집 2 : Marko의 제안에 따라 실행하려고하는 EXE와 동일한 루트 폴더에 모든 외부 DLL을 복사했습니다. 세 번째 try-catch 블록은 (예외 : Application.Run(new mainForm());)을 던지고 내 mainForm.cs의 32 번째 줄까지 추적했습니다.

private BackgroundWorker snBW = new BackgroundWorker();

우리가 가까이 있습니다 :이 라인에 나는 내 배경 노동자가?

+0

대상 프레임 워크가 무엇입니까? –

+0

'Problem Signature'메시지의 전체 부분을 붙여 넣을 수 있습니다. 이것은 일반적으로 참조하는 dll을 찾을 수 없을 때 발생합니다. 프로젝트가 목표로하는 .NET 프레임 워크는 무엇입니까? – Rahul

+0

가능한 복제본 [.NET clr20r3 예외 매개 변수 P1..P10 해독] (http://stackoverflow.com/questions/4052770/deciphering-the-net-clr20r3-exception-parameters-p1-p10) –

답변

2

멋진 질문.

대상 프레임 워크 버전이 없거나 손상되었거나 꺼져있어 응용 프로그램이 실패하는 경우가 있습니다. 애플리케이션에 필요한 프레임 워크, 전체 또는 클라이언트 프로파일을 확인하고 사용하기 전에 설치할 수 있습니다.

손상된 프레임 워크의 문제는 .Net 2.0에서 해당 구성 요소에 대한 Microsoft 업데이트가 잘못되어 종종 발생합니다. 때때로 다른 컴퓨터에서 발생합니다. 해결책은 프레임 워크를 다시 설치하는 것입니다.

비활성화 된 문제 .Net 3.5 기능은 Windows 7, 2008 Server에서 발생합니다. Windows의 기능에서 활성화 할 수 있습니다.

많은 .Net 3.5 응용 프로그램에는 실제로 .Net 3.5SP1이 필요합니다.

+0

그래서 내 테스트 클라이언트 컴퓨터에서 설치된 프로그램 목록에 .NET Frameworks 1.1, 3.5 SP1 및 4 Client Profile이 표시됩니다. 내 응용 프로그램이 4 Client Profile로 설정 되었기 때문에 다른 곳에서도 문제를 계속 검색해야합니까? – ikathegreat

+0

운영체제와 비트는 무엇입니까? 응용 프로그램의 비트는 무엇입니까? –

+0

나는 이것을 Win7 Professional x64 노트북에 썼다. 필자는 동일한 데스크탑과 x32 Vista에서 테스트했습니다 (이유를 모르겠 음). – ikathegreat

0

먼저 컴퓨터에 적절한 .net 프레임 워크가 설치되어 있는지 확인하십시오. 둘째, 외부 라이브러리를 사용하는 경우 필요한 모든 dll을 응용 프로그램 폴더로 복사하십시오.

+0

이 자동으로 수행됩니까?그렇지 않다면, 내 컴퓨터에 대해 가야하고 거기에서 사용하는 모든 DLL 사본을 가져와야한다는 뜻인가요? (절름발이?) – ikathegreat

+0

흠 ... 어떤 외부 라이브러리를 사용합니까? 프로젝트의 참조를 살펴보면 dll이 생깁니다. –

0

Form.Load 이벤트 처리기는 외부 try-catch 블록의 컨텍스트 내에서 실행되지 않습니다. UI 이벤트는 효과적으로 콜백입니다. 효과적인 디버깅을 위해 각 핸들러 내에 새로운 try-catch 블록을 선언해야합니다.

+0

좋은 아이디어. 그래서 Program.cs에 3 개의 별도 try-catch 블록을 추가했습니다. 오류 텍스트는'System.Runtime.Interop.Services.COMException (0x80040154)입니다 : 다음 오류로 인해 CLSID (텍스트 묶음)가있는 구성 요소의 COM 클래스 팩토리를 가져 오는 것이 실패했습니다 : 80040154 클래스가 등록되지 않았습니다. '좋은 방법이 있습니다. 이걸 디버깅 해 주시겠습니까? – ikathegreat

+0

전체 오류 텍스트로 새로운 질문을 열 것을 제안합니다. CLSID는 문제의 원인이되는 타사 COM 구성 요소를 식별하므로 CLSID를 포함해야합니다 (그러한 정보가 회사에 기밀 인 경우는 예외). – Douglas

관련 문제