2013-09-25 1 views
0

AnyCPU를 사용하여 C# 프로젝트를 빌드했습니다. 또한 현재 32 비트 네이티브 DLL에 의존하는 기능을 동적으로로드합니다. 이 기능을 끄면 응용 프로그램이 64 비트 응용 프로그램처럼 매우 행복하게 실행됩니다. 따라서 Visual Studio는 응용 프로그램이 64 비트 프로세스로 실행되도록 결정합니다. 응용 프로그램을 32 비트 프로세스로 강제 실행하려면 CorFlags를 사용하여 32 비트를 설정하는 기본 프로젝트에 게시 빌드 단계가 있어야합니다. Visual Studio 외부에서 응용 프로그램을 실행할 때이 작동합니다. 그러나 F5 키를 사용하여 응용 프로그램을 디버깅 할 경우 32/64 비트가 일치하지 않음을 나타내는 오류가 발생합니다. Visual Studio에서 응용 프로그램이 64 비트 프로세스로 실행될 수 있다고 판단하고 그에 따라 디버거를 설정하는 것처럼 보입니다. CorFlags를 실행하여 32 비트로 강제 실행했습니다.AnyCPU로 빌드 된 C# WinForms 응용 프로그램을 32 비트 프로세스로 디버그하도록합니다.

Visual Studio에서 응용 프로그램을 32 비트 프로세스로 디버깅하도록 강제 할 수있는 방법이 있습니까? 제 3 자 구성 요소가 결국 64 비트로 업그레이드되므로 플랫폼 대상을 AnyCPU로 남겨두고 싶습니다.

+0

다른 프로젝트 빌드를 32 비트로 추가하고 AnyCPU EXE를 어셈블리로로드하고 Main에서 Main을 실행하는 것이 좋습니다. –

+0

프로세스가 시작된 후 디버거를 연결하면 어떻게됩니까? –

답변

0

Visual Studio의 vshost가 특정 버전으로 만들어지고 디버거가 알아낼 수없는 경우가 대부분입니다. 디버거는 디버깅중인 exe와 동일한 비트 식이어야하므로 (모든 어셈블리).

exe를 자체적으로 실행하고 디버그 메뉴를 통해 프로세스를 연결해보십시오. 중단 점에 대해 더 나은 결과를 얻을 수 있지만 vshost가 없으면 자세한 정보가 표시되지 않습니다.

이것은 이론 일 뿐이며, 현재는 원래 스레드에 대한 주석을 작성하기에 충분한 담당자가 없습니다. 따라서이 내용이 잘못 되었다면 무시하십시오.

+0

현재 Attach to Process를 사용하고 있지만 이상적인 솔루션은 아닙니다. –

+0

여기에있는 것은 매우 특정한 상황입니다. 오, 소년 ... 롤 –