[c#] 시작시 예외 코드 : 0xE0434352로 충돌하는 .NET Windows 응용 프로그램을 수정하려면 어떻게해야합니까?

저는 Visual Studio 2010에서 .NET Windows Forms 응용 프로그램을 구축했습니다. 또한 Visual Studio 2010을 통해 해당 설정 / 설치 패키지를 구축했습니다. 이것은 32 비트 (x86) 응용 프로그램으로 구축되었습니다. (32 비트 전용 인 타사 Windows Forms 컨트롤을 사용합니다.)

설치 패키지를 실행하고 다른 Windows 7 64 비트 환경 및 32 비트 Windows XP 상자에 성공적으로 배포 할 수 있습니다. 설치된 응용 프로그램은 이들에서 잘 실행됩니다.

그러나 Windows Server 2008 R2-64 비트 를 실행하려고하면 시작시 응용 프로그램이 충돌합니다. 오류없이 설치 프로그램을 통해 성공적으로 설치되었습니다.

응용 프로그램을로드 할 때 충돌하는 것처럼 보입니다. 응용 프로그램의 첫 번째 줄에 메시지 상자를 넣어 로딩이지나 갔는지 확인합니다. 메시지 상자가 표시되지 않으므로 응용 프로그램을로드 / 초기화하는 동안 발생한다고 가정합니다.

지금까지 할 일이 많지 않았습니다. 세부 정보에서 다음을 볼 수 있습니다.

Exception Code: E0434352

나는 명백한 것이 있는지 알아보기 위해 주변을 낚싯 / 구글링했지만 아무것도 보지 못했습니다. CLR 에서 가능한 스택 오버플로에 대한 몇 가지 참조를 보았습니다 .

Windows Forms 애플리케이션은 다음 참조를 사용하여 빌드됩니다.

  • DevExpress
  • Infragistics Winforms 컨트롤
  • 오라클 DataAccess DLL
  • RabbitMQ

이슈가 뭐야? 이것을 알아내는 데 어떻게 접근합니까? 더 유용한 정보를 얻으려면 어떻게 디버그합니까?



답변

0xE0434352는 모든 .NET 예외에 대한 예외 코드 이므로 많은 것을 알려주지 않습니다. 이 예외 코드는 어떻게 얻었습니까? 이벤트 로그?

가장 좋은 방법은 디버거를 사용하여 더 많은 정보를 얻는 것입니다. Visual Studio 디버거가 도움이되지 않습니다 경우에, 당신은 체크 아웃해야합니다 여기서 WinDbgSOS . 소개는 여기여기 를 참조 하십시오 . 예외를 중단하고 이유에 대한 자세한 정보를 얻을 수 있는지 확인하십시오.

어셈블리를로드 할 때 문제라고 생각되면 Fusion Log 를 확인 하십시오 .


답변

이벤트 뷰어에서 해당 오류가 발생하는 경우 원본 “.NET 런타임”에서 다른 오류 이벤트 (적어도 하나)가 표시되어야합니다. Exception정보 가 포함되어 있으므로 해당 오류 메시지를 확인하십시오 .


답변

이것이 누구에게도 도움이 될지 확실하지 않지만 내 문제이기 때문에 언급 할 가치가 있다고 생각합니다.

이 오류가 발생했으며 EXE가 빌드 된 플랫폼의 문제로 판명되었습니다. x86 용으로 빌드했고 프로젝트의 Oracle 참조 때문에 x64 여야했습니다. 우리가 그렇게 변경했을 때 문제는 사라졌습니다. 따라서 유사한 충돌이 있는지 확인하십시오.


답변

이 오류 0xe0434352가 여러 다른 오류에 적용되는 것 같습니다.

누구에게나 도움이되는 경우 새 Windows 10 설치에 응용 프로그램을 설치하려고 할 때이 오류가 발생했습니다. 다른 컴퓨터에서도 작동했고 앱이 죽기 전에 잠시 시작되는 것처럼 보였습니다. 많은 시행 착오 끝에 앱에 DirectX9가 필요하다는 것이 문제였습니다. 최신 버전의 DirectX가 있었지만 버전 9가 있어야했습니다. 누군가의 좌절감을 덜어주기를 바랍니다.


답변

나는 사용자들에게 소프트웨어의 디버그 버전을 실행하도록 요청하면서 하루 종일이 문제와 싸우고있었습니다. 첫 번째 줄을 실행하지 않은 것처럼 보였기 때문입니다. 정보없는 충돌.

그런 다음 오류가 양식의 InitializeComponent 내에 있음을 깨달았습니다.

예외를 얻는 방법은 다음 줄을 제거 (또는 주석 처리)하는 것입니다.

System.Diagnostics.DebuggerStepThrough()

라인을 제거하면 정상적인 예외가 발생합니다.


답변

앱이 배포되었을 때 이것을 얻었습니다. 제 경우에는 프로젝트 보안 탭에서 “이것은 완전 신뢰 응용 프로그램입니다”를 선택했고 그로 인해 수정되었습니다.


답변

발행물:

.Net 애플리케이션 코드가 실행을 시작하기 전에 중단됨 [콘솔 애플리케이션 또는 Windows 애플리케이션]

수신 된 오류 : 오류 코드 “E0434352″와 함께 중단됨

예외 : 알 수없는 예외

시나리오 1 :

일부 종속 리소스를 사용한 애플리케이션이 이미 실행되고 해당 리소스가 실행 된 애플리케이션과 함께 계속 사용중인 경우 다른 애플리케이션 또는 동일한 exe가 다른 소스에서 트리거되면 앱 중 하나에서 오류가 발생합니다.

시나리오 2 :

애플리케이션이 스케줄러 또는 자동 작업에 의해 트리거되면 백그라운드에서 실행 상태에있을 수 있으며, 같은 애플리케이션을 다시 트리거하려고하면 오류가 트리거 될 수 있습니다.

해결책:

애플리케이션 생성, 언제 어디서 애플리케이션이 완료 되 자마자 모든 리소스를 해제합니다. 애플리케이션이 닫히면 모든 백그라운드 프로세스를 종료합니다. 일괄 프로세스, 작업 스케줄러 및 외부 도구와 같은 여러 소스에서 애플리케이션을 동시에 실행하지 않도록 확인하고 피하십시오. 애플리케이션 및 리소스 종속성을 확인하고 필요한 경우 코드를 정리합니다.