Visual Studio 2008에서 디버깅 할 때 "64 비트 응용 프로그램 변경이 허용되지 않습니다"

StackOverflow https://stackoverflow.com/questions/1498464

문제

Visual Studio 2008, C#을 사용하고 있습니다. 편집 및 연속적으로 (디버깅하는 동안 코드를 편집) 사용 하고이 예외를 얻으려고합니다.

"64 비트 응용 프로그램의 변경은 허용되지 않습니다"

왜 그런 겁니까? 해결 방법이 있습니까?

도움이 되었습니까?

해결책

CLR 수준에서 64 비트 응용 프로그램에서 편집 및 계속 지원되지 않으므로 Visual Studio가 구현할 수있는 방법이 없습니다.

이 문제를 해결하는 가장 쉬운 방법은 응용 프로그램을 x86 칩으로 타겟팅하는 것입니다. 이로 인해 WOW64 모드에서 32 비트 프로세스로 실행되므로 ENC를 사용할 수 있습니다. 다음을 수행 하여이 작업을 수행 할 수 있습니다

  1. .exe 응용 프로그램을 마우스 오른쪽 버튼으로 클릭하고 속성을 선택하십시오
  2. 빌드 탭으로 이동하십시오
  3. 플랫폼 대상 콤보 상자를 x86으로 변경하십시오

enter image description here

다른 팁

개인적으로, 내가 실제로 원하는 것은 멈추고 편집하지 않는 것입니다.

그래서 나는 단순히 도구 / 옵션 / 디버깅 / 편집을 끄고 계속합니다.

그렇게하는 것은 성가신 대화 상자가 내가 처음에는 원하지 않는 빠진 기능에 대해 나를 괴롭히는 것을 억제합니다 :-)

64 비트 코드의 "편집 및 계속"기능은 Visual Studio 2013에서 지원됩니다.

자세한 내용은 여기에 있습니다.

Jcopenha는 아직 X64에 편집 및 연속적이지 않다고 말했습니다. 64 비트 CLR의 현재 버전은이를 지원하지 않습니다. 그러나 주변의 작업이 있습니다.

당신은 그것을 찾을 수 있습니다 버그 babble 게시물.

X86의 대상 CPU로 관리 조립품을 컴파일해야합니다. 이로 인해 64 비트 CLR이 아닌 32 비트 CLR이 사용됩니다.

VB 프로젝트의 경우 프로젝트를 마우스 오른쪽 버튼으로 클릭하여 속성/컴파일/고급 컴파일 옵션/대상 CPU로 이동하여 "x86"으로 설정하십시오. C# 프로젝트의 경우 프로젝트를 마우스 오른쪽 버튼으로 클릭하여 Oppleates/Build/Platform Target으로 이동하여 "x86"으로 설정하십시오.

도움이되기를 바랍니다.

편집 및 연속 기능은 아직 x64에서 구현되지 않았습니다. 나는 그들이 아직 할 계획을 세우는 것에 대한 업데이트를 듣지 못했습니다.

또한보십시오 X64 CLR에서 편집하고 계속 작동하지 않는 이유는 무엇입니까?

MS Visual C# Express 2010에서 동일한 오류 메시지를 받았습니다. 응용 프로그램이 X86 프로젝트로 확실히 구성 되었기 때문에 재미있었습니다!

결국 .CSPROJ 파일에 다음 줄이 누락되었습니다.

<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'MY_CONFIG|x86'">
    ...
    <PlatformTarget>x86</PlatformTarget>
    ...
</PropertyGroup>

왜 누락되었는지 모르겠습니다 ... MS Visual C# Express 2010이 버그가 아니라고 생각합니다.)

  1. 대상 CPU가 '모든 CPU'로 설정되면 32 비트 창에서 32 비트 애플리케이션으로 실행되고 64 비트 창에서 64 비트 응용 프로그램이 실행됩니다. 그러나 Visual Studio는 64 비트 애플리케이션을위한 '편집 및 연속'기능을 허용하지 않습니다.

  2. 64 비트 머신에서 '유창하게'디버그하기 위해 다음 중 하나를 사용할 수 있습니다.

    a) '대상 CPU'를 '모든 CPU'로 설정하지만 '32 비트'상자를 확인하십시오.

    b) 또는 '대상 CPU'를 'x86'으로 설정

매우 중요합니다. 두 옵션 모두 '최적화 활성화'상자를 선택 취소해야합니다.

불행히도 편집 및 계속은 64 비트에서 지원되지 않습니다. 실제로 64 비트 응용 프로그램을 디버깅 할 때 편집을 사용하고 계속하려고하면 다음 오류 메시지가 표시됩니다. "64 비트 애플리케이션으로의 변경 사항이 허용되지 않습니다"많은 사용자가 기본적으로 생성 할 때 알 수 없습니다. Visual Studio 2008의 C# 또는 VB 프로젝트에서 프로젝트의 "플랫폼"은 "모든 CPU"로 설정됩니다. 즉, 32 비트 운영 체제에서 응용 프로그램을 실행하면 응용 프로그램이 32 비트 프로세스로 실행되며 마찬가지로 64 비트 운영 체제에서 응용 프로그램을 실행하면 응용 프로그램이 64 비트가됩니다. "모든 CPU"의 결과는 64 비트 운영 체제에서 응용 프로그램을 디버깅하려고 할 때 편집 및 계속 기능을 사용할 수 없다는 것입니다.

그러나 해결 방법이 있습니다. 개발 중에 프로젝트 플랫폼을 32 비트로 설정할 수 있습니다. 즉, 64 비트 운영 체제에서도 응용 프로그램이 32 비트 프로세스로 실행됩니다. 이를 WOW64 또는 "Windows On Windows"라고합니다. 기본적으로 64 비트 운영 체제에서 32 비트 응용 프로그램을 실행할 수 있습니다.

그렇다면 프로젝트 플랫폼을 32 비트로 어떻게 설정합니까? Visual Studio Configuration Manager를 사용하여 32 비트 플랫폼을 만들어야합니다. 여기에 짧은 연습이 있습니다.

먼저 Build -> Configuration Manager에서 "Configuration Manager"대화 상자를 엽니 다. 구성 관리자 대화 상자는 다음과 같습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top