[visual-studio] 편집하고 계속하기 : “다음 경우에는 변경이 허용되지 않습니다.”

깨끗한 WinForms 프로젝트를 생성하더라도 편집 및 계속이 작동하지 않고 오류가 발생합니다.

디버거가 이미 실행중인 프로세스에 연결되었거나 디버깅중인 코드가 빌드 또는 런타임에 최적화 된 경우 변경이 허용되지 않습니다.

  1. 도구 → 옵션 → 디버깅에서 편집하고 계속하기 옵션이 선택되어 있습니다.
  2. 최적화가 활성화되지 않았습니다.
  3. 설정된 관리 프로파일 러가없는 것 같습니다.
  4. 디버그 모드에서 실행 중입니다.
  5. x64 CPU 및 Windows XP 32 비트에서 실행 중이지만 플랫폼 대상을 AnyCpu가 아닌 x86으로 설정해도 도움이되지 않습니다.
  6. Visual Studio 설치 복구는 도움이되지 않습니다.

MSDN 웹 사이트에서도이 기사 를 찾았습니다 .

지원되지 않는 시나리오

다음 디버깅 시나리오에서는 편집하고 계속하기를 사용할 수 없습니다.

  • Windows 98에서 디버깅.

  • 혼합 모드 (기본 / 관리) 디버깅.

  • SQL 디버깅.

  • Dr. Watson 덤프 디버깅.

  • “처리되지 않은 예외에서 호출 스택 해제”옵션이 선택되지 않은 경우 처리되지 않은 예외 후 코드 편집

  • 임베디드 런타임 애플리케이션 디버깅.

  • 디버그 메뉴에서 시작을 사용하여 응용 프로그램을 실행하는 대신 연결 대상으로 응용 프로그램을 디버깅합니다.

  • 최적화 된 코드 디버깅.

  • 대상이 64 비트 애플리케이션 인 경우 관리 코드 디버깅. 편집하고 계속하기를 사용하려면 대상을 x86으로 설정해야합니다. (프로젝트 속성, 컴파일 탭, 고급 컴파일러 설정.)

  • 빌드 오류로 인해 새 버전이 빌드에 실패한 후 이전 버전의 코드를 디버깅합니다.

하지만이 목록의 모든 항목에 “아니오”라고 대답 할 수 있습니다.

이전에는 작동했지만 며칠 전에 작동이 중지되었고 그 이유가 무엇인지 모르겠습니다.



답변

마침내 문제를 해결했습니다 : UNINSTALL Gallio

Gallio는 거친 가장자리가 상당히 많은 것 같으며 MbUnit 3.0을 사용하지 않고 MbUnit 2.0 프레임 워크를 사용하지만 설치 프로그램 (Visual Studio 플러그인도 설치)에서 설치하지 않고 실행중인 gallio 러너를 사용하는 것이 좋습니다.

덧붙여서 Gallio 플러그인을 “비활성화”한 후에도 문제가 발생했습니다. 설치 제거만으로 문제가 해결되었습니다.

추신. nightcoder에 의해 편집 됨 :
제 경우에는 TypeMock Isolator (모킹 프레임 워크)를 비활성화하는 것이 마침내 도움이되었습니다 ! 이제 편집 및 계속이 작동합니다 !!!

TypeMock 지원의 답변은 다음과 같습니다.

편집 및 계속 문제를 더 자세히 살펴보고 Microsoft와 대화 한 후 Isolator에서는 해결할 수 없다는 결론에 도달했습니다. Isolator는 CLR 프로파일 러를 구현하며, 연구에 따르면 CLR 프로파일 러가 활성화되고 연결되면 편집 및 계속이 자동으로 비활성화됩니다. 이것은 더 이상 버그로 간주되지 않고 Isolator의 한계라고 말해서 유감입니다.


답변

기타 적용 가능한 솔루션

다음은 편집 및 계속을 빠르게 수정하려는 경우 시도 할 수 있는 불완전하고 순서가없는 해결 방법 목록입니다.

  • 디버그 모드 에 있는지 확인
  • 혼합 모드 프로세스를 시작하고 있지 않은지 확인하십시오.
  • CPU 대상을 AnyCPU가 아닌 x86 으로 설정하십시오 (x64 시스템에서)
  • 프로젝트 속성-> 디버그 에서 디버그 모드 에 대한 코드 최적화 확인란을 선택 취소합니다.
  • 고급 컴파일러 설정 에서 최적화 활성화를 선택 취소 합니다.
  • (ASP.NET) 해당하는 경우 나이트 코더의 답변 확인
  • (ASP.NET) 그럴 경우이 답변을 (행렬로) 확인하십시오.
  • (ASP.NET) 탭 에서 편집하고 계속하기가 활성화되어 있는지 확인합니다 (vs2010).
  • (ASP.NET) 속성> 웹> 서버로 이동하고 Visual Studio 개발 서버 사용 아래에서 사용 및 계속 이 선택되어 있는지 확인합니다 .
  • (ASP.NET WebAPI) 편집을 시도하기 전에 중단 점을 사용하여 Controller의 메서드에서 중지했는지 확인하십시오.
  • 에 (vs2017) 이동 도구> 옵션> 디버깅선택 해제 (선택 해제) ‘편집하며 계속하기’. 이것은 실제로 ‘통상적 인’조언과 반대입니다 (이 게시물의 다른 요점 참조). 실행중인 프로그램 을 실제로 변경할 수는 없습니다 (즉, 코드 변경 사항을 핫스왑하지 않음)-단순히 코드를 편집 할 수 있습니다 (즉, 성가신 메시지를 방지하고 편집기를 “잠금”) ).
  • 도구> 옵션> 디버깅> 일반으로 이동 하여 원본 버전과 정확히 일치하는 소스 파일 필요 가 선택 취소 되어 있는지 확인합니다.
  • Windows 디버그 힙 할당 자 사용 (기본 만 해당) [VS Community 2017]을 선택합니다.
  • Microsoft Fakes를 사용하고 있습니까? 편집 및 계속을 금지합니다.
  • 작업 관리자 에서 프로세스 트리 종료 를 선택하여 모든 * .vshost.exe 인스턴스를 종료 합니다. VS는 올바른 인스턴스를 다시 생성합니다.
  • Debug-> Delete All Breakpoints로 모든 중단 점을 제거하십시오.
  • 활성화 및 계속도구> 옵션> 디버깅 메뉴와 프로젝트 설정 모두에 있습니다. 두 곳 모두 확인하십시오. 확장 Intellitrace 설정에서는 편집하고 계속하기가 지원되지 않습니다.
  • 확인 될 디버그 정보는 에서 프로젝트 속성> 빌드> 고급>을 출력> 디버그 정보가 설정되어 전체
  • 일부 플러그인이 방해가 될 수 있습니다. 비활성화 / 제거한 다음 다른 솔루션을 다시 시도하여 확인하십시오.
  • 주의를 충분히 기울이지 않으면이 문제를 해결하는 동안 발생하는 오류가 진단하기 더 쉬운 다른 것으로 변경 될 수 있습니다. 예 : 람다 식을 포함하는 메서드는 편집 및 계속을 지원할 수 없습니다.
  • 시스템 변수 COR_ENABLE_PROFILING가로 설정되지 않았는지 확인하십시오 1. 일부 프로파일 러는 설치할 때이를 설정하고 제거 후에 그대로 둡니다. 명령 프롬프트를 열고 다음을 입력 set하여 시스템이 영향을 받는지 빠르게 확인하십시오. 그렇다면 변수를 제거하거나 다음과 같이 설정하십시오 0.

    • Windows 8 이상에서는 시스템 (제어판)을 검색합니다 .
    • 고급 시스템 설정 링크를 클릭합니다 .
    • 환경 변수를 클릭합니다 .
    • 없애다 COR_ENABLE_PROFILING
  • 알고 있어야 지원되지 않는 시나리오 (같은 질문에보고) 및 그 지원되지 않는 편집 .


* ‘당신’은 해결책을 찾기 위해 키보드로 머리를 두드리는 페이지 방문자를 의미합니다.


여기에 나열되지 않은 경우이 답변을 편집하여 해결 방법을 추가하십시오!


답변

ASP.NET 응용 프로그램을 디버깅하는 경우 속성> 웹> 서버로 이동하고 Visual Studio 개발 서버 사용에서 “사용 및 계속”이 선택되어 있는지 확인합니다.


답변

나는 같은 문제가 있었다. VS 2008을 다시 설치했지만 문제가 사라지지 않았습니다. 그러나 모든 중단 점을 삭제하면 작동하기 시작했습니다.

Debug->Delete All Breakpoints

코드에 중단 점이있는 aspx 페이지를 삭제 한 다음 동일한 이름으로 다른 페이지를 만들었 기 때문에 발생했다고 생각합니다. 이것은 아마도 VS 2008을 혼란스럽게 만들었습니다.


답변

확인해야 할 몇 가지 사항

  • 컴파일이 디버그 대 릴리스로 설정되어 있는지 확인하십시오.
  • 혼합 모드 프로세스를 시작하고 있지 않은지 확인하십시오.
  • 64 비트 머신 인 경우 CPU 타겟을 AnyCPU가 아닌 x86으로 설정해야합니다.

편집하다

나는 이것이 중요하다고 생각하지 않지만 호스팅 프로세스가 대상 플랫폼에 대해 활성화되어 있는지 확인하십시오. 아마 도움이되지 않을 것입니다.

새로운 프로젝트에 대해 재현된다면 훨씬 더 미묘한 것일 수 있습니다. 나는 다음을 시도 할 것입니다.

  • HKCU : \ Software \ Wow6432Node \ VisualStudio \ 9.0 백업 (이름을 바꿀 수도 있음)
  • 동일한 키 삭제
  • 재현을 다시 시도하십시오.

답변

위의 솔루션 중 어느 것도 나를 위해 일하지 않았습니다 (64x 컴퓨터에서 실행 됨).

마지막으로 내가 클릭 'advanced compiler settings'하고 UNCHECKED 'enable optimizations ‘나는 지금 코드와 편집을 통해 단계를 디버깅 할 수있다.


답변

“편집 및 계속”을 활성화하면 중단 모드에있을 때만 코드를 편집 할 수 있습니다. 예를 들어 예외로 인해 실행이 일시 중지되거나 중단 점에 도달하여 코드를 편집 할 수 있습니다.

이것은 실행이 일시 중지되지 않으면 코드를 편집 할 수 없음을 의미합니다 ! 디버깅 (ASP.NET) 웹 프로젝트의 경우 요청간에 변경을 수행하는 경우가 많기 때문에 이는 매우 직관적이지 않습니다. 현재 (아마도) 디버깅 코드는 실행 중이 아니지만 일시 중지되지 않았습니다!
이 문제를 해결하려면 “모두 중단”을 클릭하거나 Ctrl+ Alt+를 누를 수 있습니다 Break. 또는 어딘가 (예 : Page_Load이벤트) 에 중단 점을 설정 한 다음 페이지를 다시로드하여 중단 점에 도달하면 실행이 일시 중지되도록하고 이제 코드를 편집 할 수 있습니다. .cs파일의 코드도 .