7

Visual Studio 2015에서 .NET 4.0 응용 프로그램을 디버깅하고 있습니다. 디버거에서 편집 및 실행을 시도 할 때 내 응용 프로그램이 빌드되고 제대로 실행되지만 , 내가 만든 변경 사항 또는 내 기본 프로젝트에서 그들을 어디에서 만들지에 관계없이 다음과 같은 대화 상자가 나타납니다.오류 CS7038 (모듈을 내 보내지 못했습니다) 편집 및 계속 진행

컴파일 할 수없는 편집이 이루어졌습니다. 컴파일러 오류가 수정 될 때까지 실행을 계속할 수 없습니다 ( ). 내가 비주얼 스튜디오의 오류 목록 창에서 볼 때, 내가 볼

Console.WriteLine("foo"); 

: 제가 이야기 변화의 종류의 예로서

, 나는 다양한 방법이 줄을 추가하려고했습니다 하나의 오류, CS7038, "모듈을 내 보내지 못했습니다 '설명이 <my app name>'입니다." 파일 이름, 행 번호 또는 문자가 제공되지 않습니다. 내 코드에는 구불 구불 한 빨간색 밑줄이 없습니다. 실행중인 응용 프로그램을 중지하고 변경 사항을 적용하여 빌드하고 다시 실행하면 모든 것이 올바르게 빌드되고 실행됩니다. 따라서 빌드 타임 컴파일러와 편집 - 계속 컴파일러가 받아 들일 만하다고 생각하는 것과는 약간의 불일치가있는 것으로 보입니다.

에 대한 자세한 정보를 얻는 방법을 아는 사람이 있습니까? 편집 및 계속 모드에서 컴파일이 실패하는 이유는 무엇입니까? VBCSCompiler 프로세스에 연결하고 디버깅하는 방법에 대한 내용을 읽었으므로이를 시도했지만 모든 예외 유형이 중단 될 때까지 연결된 VS가 중단되지 않았습니다.

이것은 내 코드에 관한 질문이 아니기 때문에 편집 및 계속 컴파일러에서 잘못되었다고 생각하는 전략에 대한 것이므로 컴파일러 오류의 원인을 알 수 있습니다. 내 전체 프로젝트의 어느 곳에 나있을 수 있습니다.

편집 : 코멘트에서 언급 한 바와 같이

, 나는 비주얼 스튜디오에 디버거를 연결하고 예외가 코드를 편집 한 후 "계속"을 클릭에 던져 때 깰 수 있었다. 예외는 다음 메시지와 함께 System.NotSupportedException이었습니다 : "디버깅하는 동안 어셈블리 참조 버전을 변경할 수 없습니다". 그것은 문제의 어셈블리 이름을 나열했습니다.이 이름은 대부분 C# 인 내 응용 프로그램에서 사용되는 작은 VB.Net 프로젝트였습니다. Microsoft에 제출할 MCVE를 구축하려고하지만 현재는 하나의 VB 및 하나의 C# 프로젝트로 더 작은 솔루션에서 문제를 재현 할 수 없습니다.

편집 2 :

내가 해결과 자기 대답 경우 다른 사람의 문제가이 이상한 문제가 발생을 발견했습니다,하지만 난 사람은 "답변"에 체크 표시를 확보하고있어 사람 수 무슨 일이 일어나고 있는지 (왜 컴파일러가 참조 된 프로젝트의 버전 번호가 편집 중에 변경되었다고 생각하는지)

+0

VS의 모든 인스턴스를 강제 종료하고 다시 시작 했습니까? VS 설정을 재설정 했습니까? 그렇지 않다면, 나는 거기에서 시작할 것입니다. – David

+0

VS를 다시 시작했습니다. VS 설정을 재설정하지 않았습니다.이 설정은 무서운 것 같습니다. 문제가 해결되지 않으면 복원 할 수 있도록 설정을 저장하는 방법이 있습니까? – adv12

+0

예. 도구 -> 설정 가져 오기 및 내보내기로 이동하십시오. 거기에서 현재 설정 (내보내기)을 저장하거나, 이전 설정을 다시 불러 오기 (가져 오기) 또는 모두 재설정 할 수 있습니다. 모두 재설정을 선택하면 다음 화면에 현재 설정을 먼저 내보내려고하는지 묻는 메시지가 표시됩니다 (권장). – David

답변

2

문제의 해결 방법을 찾았지만 무슨 일이 일어나고 있는지 완전히 이해하지 못했습니다. 편집 및 계속 컴파일러에서 변경된 어셈블리 버전의 VB.NET 프로젝트에는 "AssemblyInfo.vb"라는 파일이있었습니다.응용 프로그램 탭에서 "국회 정보"버튼을 통해, 조립 버전은 프로젝트 속성에서 설정할 수 있습니다

<Assembly: AssemblyVersion("3.0.*")> 

:이 파일에는 다음 줄을 포함

screenshot of Visual Studio's Project Properties for the VB.NET project with AssemblyVersion set in two places

내가 제거 AssemblyInfo.vb의 AssemblyVersion 줄을 편집하고 계속 진행하면 문제가 해결됩니다. 처음에는 어셈블리 정보 창의 필드가 AssemblyInfo.vb와 다른 파일에 저장 되었기 때문에이 두 파일 사이에 충돌이 있었지만 AssemblyInfo를 편집하는 데는 Assembly Information 창이 유용하다는 것을 알았습니다. .vb : AssemblyInfo.vb에서 해당 줄을 삭제하면 Assembly Information 창에서 지워집니다.

더 많은 실험이 끝나면 버전 번호의 별표가 범인 것으로 보입니다. 어셈블리 버전을 완전히 지정하면 편집 및 계속 문제가 사라집니다. 그리고 참조 된 프로젝트는 VB.NET 프로젝트 여야합니다. C# 프로젝트에서 동일한 설정을 시도했지만 수정하고 계속 진행할 수있었습니다.

이것은 매우 중요한 사례 인 것처럼 보입니다. 버그 보고서를 Microsoft에 제출 하겠지만, 그동안 실제로 컴파일러에서 무엇이 진행되고 있는지 알고 싶습니다. 왜 두 가지가 다른 것입니까? 디버깅하는 동안 실제로 다시 컴파일 할 필요가없는 어셈블리의 어셈블리 버전 .... 무슨 일이 일어나고 있는지에 대한 좋은 설명이 있으면 대답으로 추가하십시오.

: here's the bug report I filed.

+0

분명히 귀하의 버그 신고가 삭제되었습니다 : ...-( – Heinzi

관련 문제