[c#] 소스 파일이 모듈이 빌드되었을 때와 다릅니다.
이것은 나를 미치게 만든다.
수정하려고하는 다소 큰 프로젝트가 있습니다. 를 입력했을 때 DbCommand
Visual Studio가 구문 강조 표시를하지 않았고 System.Data.Common
.
아무 것도 강조 표시되지 않았지만 프로젝트가 내 브라우저에서 제대로 실행되는 것 같았습니다. 그래서 디버거를 실행하여 제대로 작동하는지 확인했습니다.
강조 표시를하지 않은 수업이 호출 될 때마다 나는 "the source file is different from when the module was built"
메시지를받습니다.
솔루션을 정리하고 여러 번 다시 빌드하고 tmp 파일을 삭제 한 다음 여기의 모든 지침을 따랐습니다. “소스 파일이 모듈이 빌드되었을 때와 다릅니다.” , 웹 서버를 다시 시작했지만 소스 파일이 명확하지 않은 경우 여전히 다릅니다.
이 때문에 오늘 작성한 코드를 테스트 할 수 없습니다.
- 방금 컴파일했을 때 소스가 바이너리와 어떻게 다를 수 있습니까?
- 비주얼 스튜디오에 감각을 두드리는 방법이 있습니까? 아니면 뭔가 빠졌습니까?
답변
다른 소스가 진입 점이있는 소스 (static void Main) 인 콘솔 앱을 실행하는이 문제가 발생했습니다. bin 및 obj 디렉토리를 삭제하고 전체 재 빌드를 수행하면이 문제가 수정되는 것처럼 보였지만 코드를 변경할 때마다 다시 구식이됩니다.
내가 찾은 이유는 다음과 같습니다.
- “만 빌드 시작 프로젝트 및 실행에 대한 종속성”(도구-> 옵션-> 프로젝트 및 솔루션-> 빌드 및 실행)을 확인했습니다.
- 구성 관리자에서 내 시작 프로젝트에 “빌드”가 선택되지 않았습니다.
(# 2의 경우-> ‘디버그 / 릴리스’드롭 다운 목록 아래의 도구 모음을 통해 액세스 할 수 있습니다.)
답변
나는 단지이 같은 문제를 겪고 있었고, 내 프로젝트는 모두 동일한 솔루션에 있었으므로 Project to Project 참조를 사용하고 있었으므로 하나가 변경되면 다른 하나가 업데이트되어야했습니다. 그러나 그것은 사실이 아니었고, VS2010을 빌드하고, 다시 빌드하고, 닫고, 소스 컨트롤에서 새 복사본을 가져 왔습니다. 이 중 어느 것도 효과가 없었고 마침내 시도한 것은 프로젝트를 마우스 오른쪽 버튼으로 클릭하고 각 프로젝트를 개별적으로 다시 빌드하는 것입니다. .dll 및 .pdb 파일을 업데이트하여 디버깅 할 수있었습니다.
여기서 문제는 dll 및 또는 pdb 파일이 동기화되지 않는다는 것입니다.
답변
다음과 같이하세요
- DLL이 생성 된 프로젝트에서 bin 디렉토리를 삭제하면됩니다.
- 프로젝트를 다시 빌드하십시오.
- DLL을 참조하는 프로젝트에서 참조를 제거하십시오.
- 참조를 다시 포함하십시오.
- 즐겨.
답변
이러한 답변 외에도 잘못된 경로로 인해 새 DLL을 이전 DLL로 교체하는 동안 동일한 문제가 발생했습니다. 이 오류가 계속 발생하면 DLL의 잘못된 경로를 참조하지 않을 수 있습니다. IIS 관리자로 이동하여 DLL을 사용하는 웹 사이트를 클릭하십시오. 오른쪽 창에서 고급 설정을 클릭하고 파일 탐색기의 실제 경로 폴더 경로로 이동 한 다음이 폴더를 사용하여 DLL을 대체하고 있는지 확인하십시오.
답변
확인해야 할 사항 :
프로젝트 참조를 다시 확인 했습니까?
Visual Studio 시작 웹 서버가 아직 실행 중입니까? 시스템 트레이를 확인하고 톱니 바퀴 아이콘이있는 페이지를 찾습니다 (두 개 이상있을 수 있음).
(출처 : msdn.com )
마우스 오른쪽 버튼을 클릭하고 닫거나 종료합니다. 둘 이상있을 수 있습니다. 지금 변경 사항을 디버깅 할 수 있습니까?
디버그 버전을 실행하고 있지만 릴리스 버전 만 빌드 했습니까 (또는 그 반대의 경우)?
컴파일이 실제로 성공 했습니까? “오류가 있습니다. 그래도 계속 하시겠습니까?”를 클릭했습니다. 깨닫지 않고 몇 번 메시지를 보냅니다.
답변
웹 서비스의 경우 Visual Studio “브라우저에서보기”명령을 사용하여 문제가 발생할 수 있습니다. 그러면 서비스의 DLL 및 PDB 파일이 bin 및 obj 폴더에 저장됩니다. 클라이언트에서 웹 서비스로 들어갈 때 Visual Studio는 어떻게 든 bin (또는 obj) 폴더의 PDB를 사용하지만 프로젝트의 출력 빌드 폴더에있는 DLL을 사용합니다. 몇 가지 해결 방법이 있습니다.
- 웹 서비스 bin 및 obj 파일에서 DLL 및 PDB 파일을 삭제 해보십시오.
- Visual Studio에서 “브라우저에서보기”를 클릭 해보십시오.
이전에 소스 파일 불일치 오류가 발생한 경우 Visual Studio에서 블랙리스트에 파일 이름을 추가했을 수 있습니다. 솔루션 속성을 확인하십시오. 대화 상자의 왼쪽에서 “공통 속성-> 소스 파일 디버그”를 선택합니다. 웹 서비스 소스 파일이 “이 소스 파일을 찾지 않음”필드에 나타나면 해당 파일을 삭제하십시오.
답변
방금이 문제가 발생했습니다.
위의 모든 것을 시도했지만 이것 만 효과가 있습니다.
- 솔루션의 .pdb 파일을 삭제하십시오.
- 문제가되는 .obj 파일을 삭제합니다 (동기화되지 않은 것으로보고되는 파일의 경우).
솔루션을 구축하십시오.
이것은 나를 위해 앞으로 나아가는 모든 빌드에 대한 문제를 해결했습니다.