Visual Studio에서 디버깅 할 때 때때로 중단 점을 추가하지만 중공 상태이며 VS는 "현재 중단 점이 맞지 않습니다. 소스 코드가 원본 버전과 다릅니다." 분명히 이것은 디버깅 할 수 없게합니다.
이 메시지는 지상에서 무엇을 의미합니까? 어떤 원본 버전입니까? 방금 솔루션을 열고 코드를 변경하지 않은 경우 어떻게 '원본 버전'이있을 수 있습니까?
Visual Studio에서 디버깅 할 때 때때로 중단 점을 추가하지만 중공 상태이며 VS는 "현재 중단 점이 맞지 않습니다. 소스 코드가 원본 버전과 다릅니다." 분명히 이것은 디버깅 할 수 없게합니다.
이 메시지는 지상에서 무엇을 의미합니까? 어떤 원본 버전입니까? 방금 솔루션을 열고 코드를 변경하지 않은 경우 어떻게 '원본 버전'이있을 수 있습니까?
답변:
"소스 코드는 원본 버전과 다릅니다."
솔루션 탐색기 내부의 프로젝트 폴더를 마우스 오른쪽 버튼으로 클릭하고을 선택하십시오 Clean
. 새 버전의 프로젝트를 빌드하면 중단 점이 다시 작동합니다!
디버그 빌드 구성에서 DLL 프로젝트를 선택 해제하면 새 코드가 작성되지 않습니다!
Build --> Configuration Manager ...
(VS2010)으로 이동하여 디버깅하려는 코드가있는 프로젝트가 현재 빌드 구성에 대해 확인되어 있는지 확인하십시오.
Any CPU
옵션을 선택하면 다시 작동합니다.
나를 위해 그것은 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는 다른 하나를 편집하는 동안 그 중 하나를 사용하고있었습니다.
%localappdata%
검색 창에 입력 하면 다음으로 바로 연결됩니다.C:\Documents and Settings\%username%\AppData\Local
당신은 이것을 한 적이 있습니까?
상자를 체크하고 "예"를 누르면 프로젝트가 컴파일되지 않아도 마지막으로 성공적으로 빌드됩니다. 즉, 중단 점을 설정할 때마다 해당 오류가 발생합니다.
이 값을 변경하십시오 :
이동
선택을 취소 정확히 원래 버전에 맞게 소스 파일을 필요
릴리스 대신 솔루션 구성 에서 디버그 를 선택하십시오.
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에서 수정되어야합니다.
charset=utf8
"UTF-8 BOM과 함께"으로 해석되고 있었다. 해당 해석을 "BOM없이"로 변경하면 BOM이있는 일부 UTF-8 파일이 손상되었습니다. 따라서이 문제가 발생하고 Visual Studio 수정 프로그램이 아직 릴리스되지 않은 경우 텍스트 파일의 시작 부분에서 BOM을 제거하면 문제가 해결 될 수 있습니다. (이 코멘트는 제로 윙 참조를 구걸 하고 있습니다 ... :-))
이는 프로젝트의 코드에 대한 프로젝트 참조 대신 바이너리에 대한 파일 참조를 사용하고 있고 참조하는 컴파일 된 바이너리가 시스템의 해당 소스 코드와 동기화되지 않는 경우에도 종종 발생합니다. 새로운 소스 코드없이 소스 컨트롤에서 바이너리의 새 버전을 다운로드했거나 머신에 바이너리 버전이 몇 개 있고 이전 사본 등을 참조하고 있기 때문에 이런 일이 발생할 수 있습니다. 문제는 프로젝트 참조를 실용적으로 사용하는 것이 좋습니다.
나를 위해, 어떤 항목도 문제를 해결하지 못했습니다. 방금 함수 안에 새로운 코드 줄을 추가했습니다.
int a=0;
그것을 추가함으로써, 나는이 기능을 원래 버전에 추가하기 위해 Visual Studio를 트리거했다고 생각합니다.
디버깅하는 동안 또는 디버그 세션간에 시스템 시간이 변경되면 프로그래밍 방식, 수동 또는 외부 프로그램에 의해 발생할 수 있습니다.
나를 위해이 문제를 해결 한 거의 눈에 띄지 않는 설정이 있습니다. 중단 점에 도달하지 않은 특정 소스 파일이있는 경우 다음에 나열 될 수 있습니다.
나에게 알려지지 않은 어떤 이유로 VS 2013은 소스 파일을 거기에 배치하기로 결정했으며 그 결과 더 이상 해당 파일에서 중단 점을 찾을 수 없었습니다. "소스 코드가 원본 버전과 다릅니다"의 원인 일 수 있습니다.
문제는 디버그 정보가 어셈블리와 동기화되어 있지 않다는 것입니다. 해결책은 간단합니다.
트릭을해야합니다!
(이상한 것은 .pdb 파일을 버리지 않고 다시 빌드하는 것이 항상 작동하지는 않습니다. 수정 된 날짜가 업데이트되는 것을 볼 수 있지만 여전히 체인 (VS2013 디버거, IIS, 어셈블리 캐시) 어딘가에이 변경이 감지되지 않습니다 )
디버그 모드를 시작하기 전에 디버그 모드에서 실행하는 대신 중단 점을 비활성화 한 후 재설정하십시오.
당신이있는 경우 솔루션에서 하나 개 이상의 프로젝트를 하고 있는지 올바른 프로젝트가로 설정되어 있는지 확인 StartUp Project
. 특정 프로젝트를 솔루션의 시작 프로젝트로 설정하려면 프로젝트를 마우스 오른쪽 버튼으로 클릭하고Set As StartUp Project
.
시작 프로젝트를 올바르게 설정하면 스레드가 원하는 중단 점에 도달했습니다.
나는 2017 대 32 비트 빌드에서 이것을 경험했다.
정확히 어떤 해결책도 나를 위해 일하지 않았습니다. 다시 시작하고 IDE 파일을 지우고 빌드 된 솔루션을 정리하고 git repo에서 가져 와서 솔루션을 다시 빌드했습니다.
나는 nuget에서 64 비트 종속성을 가져오고 있었고 어셈블리를 사용하자마자 소스는 더 이상 최종 실행 파일에 빌드되지 않고 대신 IDE 캐시 소스가 빌드되었습니다.
나는 nuget 구성을 제거하고 참조 된 어셈블리를 제거하고 소스를 다운로드하고 수동으로 log4net을 빌드하고 서명 한 다음 프로젝트의 폴더에 추가하고 참조를 추가했으며 다시 디버깅 할 수있었습니다.
이것은 고통 스럽습니다. 모든 사람들이 볼 수 있도록 답변 목록에 올라 오기를 바랍니다.
편집 : IDE 설정에서 "prompt on build error"옵션이 켜져 있어도 빌드 중에 오류가 없습니다.
계층 적 아키텍처 프로젝트의 여러 프로젝트에서 동일한 문제가 발생했으며 선택한 프로젝트의 빌드 확인란이 구성되어 있지 않은 것이 문제였습니다. 하나의 프로젝트에서 문제가 해결되었습니다.
다른 계층의 경우 구성에서 빌드가 가능하더라도 동일한 문제가 발생했습니다. 프로젝트 청소를 다시 시작하는 것과 같은 다른 모든 옵션을 수행했지만 도움이되지 않았습니다. 마지막으로 특정 프로젝트의 빌드 확인란을 선택 취소하고 정리하고 다시 빌드합니다. 다시 확인란에 표시하고 동일한 작업을 수행했습니다. 그런 다음 문제가 해결되었습니다.
도움이 되었기를 바랍니다..
필자의 경우 VS 2012에서 실행중인 프로세스에 연결했습니다. 연결하면 다양한 모드 (기본, 스크립트, silverlight, 관리되는 2.0, 관리되는 4.0 등)에서 디버깅 할 수있는 옵션이 제공됩니다. 기본적으로 디버거는 모드를 자동으로 선택합니다. 그러나 자동이 항상 올바른 선택을하는 것은 아닙니다. 프로세스에 여러 유형의 코드가 포함 된 경우 디버거가 올바른 코드를 사용하고 있는지 확인하십시오.
나를 위해 일한 것은 솔루션 플랫폼을 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