“현재 중단 점에 도달하지 않습니다. 소스 코드는 원본 버전과 다릅니다.”이것은 무엇을 의미합니까?
Visual Studio에서 디버깅 할 때 때때로 중단 점을 추가하지만 중공 상태이며 VS는 "현재 중단 점이 맞지 않습니다. 소스 코드가 원본 버전과 다릅니다." 분명히 이것은 디버깅 할 수 없게합니다.
이 메시지는 지상에서 무엇을 의미합니까? 어떤 원본 버전입니까? 방금 솔루션을 열고 코드를 변경하지 않은 경우 어떻게 '원본 버전'이있을 수 있습니까?
"소스 코드는 원본 버전과 다릅니다."
솔루션 탐색기 내부의 프로젝트 폴더를 마우스 오른쪽 버튼으로 클릭하고을 선택하십시오 Clean
. 새 버전의 프로젝트를 빌드하면 중단 점이 다시 작동합니다!
디버그 빌드 구성에서 DLL 프로젝트를 선택 해제하면 새 코드가 작성되지 않습니다!
Build --> Configuration Manager ...
(VS2010)으로 이동하여 디버깅하려는 코드가있는 프로젝트가 현재 빌드 구성에 대해 확인되어 있는지 확인하십시오.
나를 위해 그것은 WebSite 프로젝트를 작업하는 동안이었다. 이 임시 폴더를 정리 한 후 올바른 컴파일러 오류가 발생했습니다.
C:\Documents and Settings\%username%\AppData\Local\Temp\Temporary ASP.NET Files
C:\windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files
결국 의도적으로 하위 폴더로 이동 한 클래스 파일이 루트 폴더에 다시 나타나는 것을 발견했을 때 문제가 해결되었습니다. VS는 다른 하나를 편집하는 동안 그 중 하나를 사용하고있었습니다.
당신은 이것을 한 적이 있습니까?
상자를 체크하고 "예"를 누르면 프로젝트가 컴파일되지 않아도 마지막으로 성공적으로 빌드됩니다. 즉, 중단 점을 설정할 때마다 해당 오류가 발생합니다.
이 값을 변경하십시오 :
- 도구
- 옵션
- 프로젝트 및 솔루션
- 빌드하고 실행
- 실행시 빌드 또는 배포 오류가 발생하면 시작하지 마십시오.
- 빌드하고 실행
- 프로젝트 및 솔루션
- 옵션
이동
- 도구
- 옵션
- 디버깅
- 일반
- 디버깅
- 옵션
선택을 취소 정확히 원래 버전에 맞게 소스 파일을 필요
릴리스 대신 솔루션 구성 에서 디버그 를 선택하십시오.
VS의 "출력"창에주의하십시오. 어떤 어셈블리가 언제로드되는지 알려줍니다. 폴더 어딘가에 이전 버전의 어셈블리가로드되는 것을 볼 수 있습니다.
예를 들어, 여러 어셈블리가 있고 현재 지원 어셈블리 중 하나를 중단하려는 경우 CLR은 어셈블리 해결을 처리하여 프로젝트에서 참조한 것과 다른 어셈블리 파일을로드 할 수 있습니다.
Visual Studio를 닫고 솔루션을 다시 열면 문제가 해결 될 수 있습니다. 즉 IDE 자체의 버그입니다 (VS2010을 실행 중임).
Visual Studio 인스턴스가 두 개 이상 실행중인 경우 문제가있는 솔루션을 실행하는 인스턴스 만 닫으면됩니다.
이 문제를 해결하는 새로운 방법은 Visual Studio 2017 15.3.1부터 15.3.5부터 나타납니다. 당신이 사용하는 경우 EditorConfig을 의 charset=utf8
옵션은 이러한 현상이 발생합니다. VS 팀은 이것을 재현 했으며 그들이 작업 중이라고 말합니다 .
따라서 하나의 수정은 charset=utf8
.editorconfig 파일에서 라인 을 주석 처리하는 것 입니다.
편집 : 이것은 VS 15.5에서 수정되어야합니다.
이는 프로젝트의 코드에 대한 프로젝트 참조 대신 바이너리에 대한 파일 참조를 사용하고 있고 참조하는 컴파일 된 바이너리가 시스템의 해당 소스 코드와 동기화되지 않는 경우에도 종종 발생합니다. 새로운 소스 코드없이 소스 제어에서 바이너리의 새 버전을 다운로드했거나 시스템에 바이너리 버전이 몇 개 있고 이전 사본 등을 참조하고 있기 때문에 이런 일이 발생할 수 있습니다. 문제는 프로젝트 참조를 실용적으로 사용하는 것이 좋습니다.
나를 위해, 어떤 항목도 문제를 해결하지 못했습니다. 방금 함수 안에 새로운 코드 줄을 추가했습니다.
int a=0;
그것을 추가함으로써, 나는이 기능을 원래 버전에 추가하기 위해 Visual Studio를 트리거했다고 생각합니다.
나를 위해이 문제를 해결 한 거의 눈에 띄지 않는 설정이 있습니다. 중단 점에 도달하지 않은 특정 소스 파일이있는 경우 다음에 나열 될 수 있습니다.
- 솔루션 탐색기
- 솔루션을 마우스 오른쪽 버튼으로 클릭
- 속성
- 공통 속성
- 소스 파일 디버그
- "이 소스 파일을 찾지 마십시오".
- 소스 파일 디버그
- 공통 속성
- 속성
- 솔루션을 마우스 오른쪽 버튼으로 클릭
나에게 알려지지 않은 어떤 이유로 VS 2013은 소스 파일을 거기에 배치하기로 결정했으며 그 결과 더 이상 해당 파일에서 중단 점을 찾을 수 없었습니다. "소스 코드가 원본 버전과 다릅니다"의 원인 일 수 있습니다.
문제는 디버그 정보가 어셈블리와 동기화되어 있지 않다는 것입니다. 해결책은 간단합니다.
- bin 폴더로 이동
- .pdb 파일을 제거하십시오
- 재건
트릭을해야합니다!
(이상한 것은 .pdb 파일을 버리지 않고 다시 빌드하는 것이 항상 작동하지는 않습니다. 수정 된 날짜가 업데이트되는 것을 볼 수 있지만 여전히 체인 (VS2013 디버거, IIS, 어셈블리 캐시) 어딘가에이 변경이 감지되지 않습니다 )
활성화기를 사용하고 중단 점을 설정 한 어셈블리가 아직로드되지 않은 경우이 메시지가 표시 될 수 있습니다.
활성화 기가 어셈블리를로드하면 중단 점이 해결됩니다 (어셈블리 및 디버그 기호가 최신 상태라고 가정). 살펴보기 좋은 곳은 디버깅 메뉴의 모듈 창입니다. 거기에서 파일이 속한 어셈블리를 찾아야합니다. 먼저 어셈블리가로드되었는지 확인하십시오. 그렇다면 어디에서로드됩니까? 그런 다음 기호 파일이로드됩니다. 다시, 기호 파일은 어디서로드됩니까? 마지막으로 두 버전을 모두 확인하십시오.
나는 이것도 만났다. 내 문제를 일으킨 조건 :
- 전체 IIS7 인스턴스를 로컬로 실행하고 있습니다.
- 소프트웨어를 별도의 프로젝트로 버전 화하고 있습니다.
이전 버전을 열어서 (VS는 IIS 디버깅 에서이 인스턴스를 가리킬 것인지 묻고 '예'라고 대답 한 후) 현재 버전을 열어 ( '예'로 IIS 프롬프트에 응답하여) )을 찾은 다음 이전 버전에서 디버그를 시도합니다.
이 문제를 해결하기 위해 이전 버전과 의도 한 버전을 닫았다가 다시 열어 디버깅 소스로 다시 한 번 강조했습니다.
디버깅하는 동안 또는 디버그 세션간에 시스템 시간이 변경되면 프로그래밍 방식, 수동 또는 외부 프로그램에 의해 발생할 수 있습니다.
디버그 모드를 시작하기 전에 디버그 모드에서 실행하는 대신 중단 점을 비활성화하고 다시 설정하십시오.
일부 CRL 언어 (관리되는 C ++, C # 등)로 구현 된 모듈을로드하는 C ++ 프로젝트를 디버깅 할 때도 발생합니다. 이 상황에서 오류 메시지는 실제로 오해의 소지가 있습니다.
해결책은 CLR (공용 언어 런타임) 지원 구성 특성을 시작 프로젝트에 넣고 다시 컴파일하는 것입니다.
당신이있는 경우 솔루션에서 하나 개 이상의 프로젝트를 하고 있는지 올바른 프로젝트가로 설정되어 있는지 확인 StartUp Project
. 특정 프로젝트를 솔루션의 시작 프로젝트로 설정하려면 프로젝트를 마우스 오른쪽 단추로 클릭하고을 선택하십시오 Set As StartUp Project
.
시작 프로젝트를 올바르게 설정하면 스레드가 원하는 중단 점에 도달했습니다.
나에게 솔루션은 Advanced Build Settings
프로젝트 속성 에서 숨겨졌습니다 .
알 수없는 이유로 중단 점에 도달하도록 none
설정했습니다 full
.
이 대화 상자를 열려면 프로젝트 속성을 열고로 이동 Build
한 다음 Advanced...
페이지 하단에서 버튼 을 선택 하십시오.
계층 적 아키텍처 프로젝트의 여러 프로젝트에서 동일한 문제가 발생했으며 선택한 프로젝트의 빌드 확인란이 구성되어 있지 않은 것이 문제였습니다. 하나의 프로젝트에서 문제가 해결되었습니다.
다른 계층의 경우 구성에서 빌드가 가능하더라도 동일한 문제가 발생했습니다. 프로젝트 청소를 다시 시작하는 것과 같은 다른 모든 옵션을 수행했지만 도움이되지 않았습니다. 마지막으로 특정 프로젝트의 빌드 확인란을 선택 취소하고 정리하고 다시 빌드합니다. 다시 확인란을 표시하고 동일한 작업을 수행했습니다. 문제가 해결되었습니다.
도움이 되었기를 바랍니다..
이동:
도구> 옵션> 디버깅> 일반> 선택되지 않은 " 원본 버전과 정확히 일치하도록 소스 파일 필요 "
필자의 경우 VS 2012에서 실행중인 프로세스에 연결했습니다. 연결하면 다양한 모드 (네이티브, 스크립트, 실버 라이트, 관리되는 2.0, 관리되는 4.0 등)에서 디버깅 할 수있는 옵션이 제공됩니다. 기본적으로 디버거는 모드를 자동으로 선택합니다. 그러나 자동이 항상 올바른 선택을하는 것은 아닙니다. 프로세스에 여러 유형의 코드가 포함 된 경우 디버거가 올바른 코드를 사용하고 있는지 확인하십시오.
필자의 경우 에뮬레이터에 대해 테스트 된 Windows CE 앱을 개발 중이었습니다. 문제는 실행 파일이 에뮬레이터에 배포되지 않았기 때문에 새 .exe가 에뮬레이터에 복사되지 않았기 때문에 개발 환경의 .pdb가 에뮬레이터의 .exe와 동기화되지 않은 것입니다. 에뮬레이터에서 .exe를 삭제하여 새 배포를 강제로 수행해야했습니다. 그런 다음 효과가있었습니다.
나를 위해 일한 것은 솔루션 플랫폼을 x86에서 Any CPU로 변경하는 것이 었습니다. Any로 변경 한 후 중지 주소를 설정하고 웹 사이트를 실행하고 페이지를 연 후 버튼을 클릭하여 중지했습니다. 사이트를 닫고 x86으로 다시 변경하고 동일한 순서를 성공적으로 수행했습니다.
Windows 7, Visual Studio Express 2010에서 Windows XP SP3에 호환성 모드 사용 옵션을 활성화 한 경우이 오류가 발생할 수 있습니다.
옵션을 선택 해제하고 다시 완벽하게 작동했습니다. VS 또는 실행 파일의 바로 가기를 마우스 오른쪽 버튼으로 클릭하고 속성 을 선택한 다음 호환성을 선택하십시오 .
먼저 커맨드 라인에서 시도했습니다.
명령 줄에서 임시 파일을 삭제하면 작동했습니다.
C : \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ Temporary ASP.NET 파일> rd / s root
내가하면 안 함 "내 코드 만 사용" 도구에서 옵션 -> 옵션 -> 디버깅 -> 일반
문제가 해결 되었습니다. 그것은 WCF 응용 프로그램이며 ashx 페이지를 디버깅하려고했습니다. http://blogs.msdn.com/b/zainnab/archive/2010/10/25/understanding-just-my-code.aspx
나는 2017 대 32 비트 빌드에서 이것을 경험했다.
정확히 어떤 해결책도 나를 위해 일하지 않았습니다. 다시 시작하고 IDE 파일을 지우고 빌드 된 솔루션을 정리하고 git repo에서 가져 와서 솔루션을 다시 만들지 못했습니다.
나는 nuget에서 64 비트 종속성을 가져오고 있었고 어셈블리를 사용하자마자 소스는 더 이상 최종 실행 파일에 빌드되지 않고 대신 IDE 캐시 소스가 빌드되었습니다.
너겟 구성을 제거하고 참조 된 어셈블리를 제거하고 소스를 다운로드하고 수동으로 log4net을 빌드하고 서명 한 다음 프로젝트의 폴더에 추가하고 참조를 추가하고 다시 디버깅 할 수있었습니다.
이것은 고통 스럽습니다. 모든 사람들이 볼 수 있도록 답변 목록에 올라 오기를 바랍니다.
편집 : IDE 설정에서 "prompt on build error"옵션이 켜져 있어도 빌드 중에 오류가 없습니다.
디버그하려고 할 때 릴리스 모드에 있지 않은지 확인하십시오.
디버깅 된 프로세스에 여러 appdomains가 있고 어셈블리가 둘 다에로드되고 그 중 하나가 이전 사본 (일반적으로 플러그인과 같이 동적으로로드 된 것)을로드하는 경우 중단 점은 단색으로 나타날 수 있지만 중단 점에 도달하는 스레드는 이전 어셈블리가있는 appdomain이며 적중하지 않습니다. 모듈 창에서로드 된 어셈블리와 해당 경로를 확인할 수 있습니다.
'Programming' 카테고리의 다른 글
C # 부분 클래스를 사용하는 것이 언제 적절한가요? (0) | 2020.02.13 |
---|---|
숭고한 텍스트가 탭당 두 칸을 들여 쓰도록하려면 어떻게합니까? (0) | 2020.02.13 |
파이썬에서 나쁜 / 잘못된 인수 조합에 대해 어떤 예외를 제기해야합니까? (0) | 2020.02.13 |
Django-예약 된 작업을 설정 하시겠습니까? (0) | 2020.02.13 |
localStorage 값의 최대 크기는 얼마입니까? (0) | 2020.02.13 |