Visual Studio 2015 또는 2017에 IntelliSense 오류가 표시되지만 솔루션이 컴파일됩니다.


122

현재 새로운 Visual Studio 2015를 평가 중이며 IntelliSense에서 이상한 문제가 발생했습니다. 새 스튜디오로 주요 솔루션을 컴파일하면 빌드는 성공하지만 그럼에도 불구하고 6 개의 오류가 표시됩니다.

나는 그것이 실제 오류가 아니라 단지 지능적인 오류라는 것을 발견했습니다. 코드는 확실히 정확하고 모든 것이 성공적으로 컴파일되었습니다. 그러나 코드는 빨간색으로 표시되고 오류 목록에 오류가 표시됩니다.

6 개의 오류는 모두 동일한 출처를 가지고 있습니다. 간단한 생성자 호출입니다. 이상하지만 오류없이 똑같은 생성자가 발생하는 경우도 있습니다.

오류 메시지 :

Code: CS1729
Message: '<the class>' does not contain a constructor that takes that many arguments.
Project: <the project name>
File: <the path to the file>

새 스튜디오는 레거시 소프트웨어 (VS13 없음)없이 새로 설치된 Windows 7에 설치되었습니다.

나는 이미 캐시를 지우고, suo 파일을 삭제하고, bin과 obj 디렉토리를 삭제하고, 솔루션을 정리하고 재 구축하려고 시도했지만 아무것도 작동하지 않았습니다.

누구든지 저에게 그 행동을 설명 할 수 있습니까?


2
intellisense에서 사용하는 파서는 실제로 코드를 컴파일하는 데 사용되는 컴파일러와 다릅니다.
진정

1
이것은 VS 2013에서도 발생합니다. VS가 아직 전체 코드 기반의 인덱싱을 완료하지 않았을 수 있습니다. 예상대로 컴파일되고 작동하면 신경 쓰지 않을 것입니다.
코드 다른

2
@chill VS2015에서는 Roslyn의 일부인 동일한 파서 여야합니다.
Lasse V. Karlsen 2015 년

1
문제를 재현하는 작은 프로젝트를 만들 수 있습니까? 그렇다면 코드를 게시 할 수 있습니까?
Lasse V. Karlsen

클래스가 부분적입니까, 아니면 컴파일 타임에 생성 된 일부입니까?
Panagiotis Kanavos

답변:


58

마이그레이션 된 프로젝트에서도이 문제가 발생했기 때문에 Microsoft.CSharp dll을 참조했습니다. 일부 프로젝트에서는 프로젝트에서 참조를 제거하고 다시 추가해야했습니다.


3
팀원이 새 프로젝트를 솔루션에 추가하고 기존 프로젝트에서 새 프로젝트로 일부 cs 파일을 마이그레이션 할 때이 작업을 수행해야했습니다. 최신 정보를 얻었을 때 많은 오류를 보았지만 컴파일하고 실행할 수있었습니다. 불쾌한 프로젝트에서 새 프로젝트에 대한 참조를 삭제하고 다시 추가하는 것이 저에게 효과적이었습니다.
Bill

1
Bill이 설명한 바로 그 상황이 우리에게 일어났습니다. 일부 수업은 새 프로젝트로 이동되었습니다. 소스 제어에서 새 프로젝트 참조를 가져올 때 Visual Studio가 Intellisense 캐시를 업데이트하지 않은 것 같습니다. 참조를 수동으로 다시 입력하면 VS가 그렇게해야합니다.
Peter Macej

2
솔루션이 컴파일되지만 일부 파일에 구불 구불 한 오류가 표시됩니다. 디버그에서만 "릴리스"에 표시된 오류가 없습니다. Microsoft.CSharp가 제거되었고 오류가 사라졌습니다. 감사합니다!
Michael

@Michael 그 팁을 주셔서 감사합니다. 나는 똑같은 문제가 있습니다. 릴리스에는 오류가 없지만 디버그에는 많은 오류가 있습니다.
user2061057 2011

언급 된 클래스가 자체 코드 인 경우 제외하고 클래스가 포함 된 파일을 포함 할 수 있습니다. IntelliSense를 업데이트하려면 VS를 트리거해야합니다. #awfulbug
David S.

198

수천 개의 인텔리 센스 오류와 0 개의 빌드 오류가있었습니다. .suo파일을 삭제 하고 VS intellisense를 다시 시작하면 오류가 사라집니다.

Suo 파일은 소스에 상대적으로 위치합니다. .vs\SolutionName\v14\.suo

코멘트에 따르면 : 그것은 *.suo숨겨진 파일 임을 조심하십시오 .

편집 : 의견에 따르면 VS2017에는 동일한 문제가 있으므로 유사한 솔루션을 사용할 수 있습니다. 삭제.vs\SolutionName\v15\.suo


7
참고 : *.suo경우에 따라 파일이 숨겨 질 수 있습니다. 따라서 View Hidden filesWindows 탐색기 에서 옵션 을 활성화해야합니다 .
Athafoud dec.

6
.suo를 죽여도 아무런 효과가 없었지만 bin과 obj dir을 삭제하고 솔루션을 다시 빌드했습니다.
Holger Böhnke

.suo 파일을 삭제해도 문제가 해결되지 않았습니다 (VS2015에서). 코드 숨김에서 속성을 참조하는 자바 스크립트에서 가짜 빨간색이 구불 구불하게 <%=Foo%>나타납니다. 변수가 선언되지 않았지만 모든 것이 런타임에 작동합니다.
Tim

100 % 확신 할 수는 없지만 XAML
Geordie

찾기 . -name "* suo"-exec rm -rf {} \;
Derek Greer

20

Visual Studio 2017 ASP.Net Core Project에서 유사한 문제가 발생했습니다. 다음 단계는 나를 위해 트릭을했습니다.

  1. 깨끗한 솔루션 수행
  2. 닫기 VS
  3. .suo 파일 삭제 및 bin / obj 디렉토리 삭제
  4. VS 다시 열기

1
이것은 효과가 있지만 때때로 그렇게 지루한 일입니다. 릴리스 모드에서 빌드 할 때 항상이 문제가 있습니다. 이상한 VS는 스스로 알아낼 수 없습니다.
nawfal

12

다른 문제와 비슷하지만 해상도가 다릅니다. 다른 사람을 도울 수있는 경우 게시합니다.

Visual Studio 2017 15.5.2 실행 나는 힘내를 사용하고 자주 분기를 전환합니다. 몇 주 전에 편집자가 오류를 표시하기 시작했습니다 (참조가 유효하더라도 찾을 수없는 유형과 관련된 모든 유형). 컴파일은 훌륭하게 작동했습니다. VS 2017 15.6 Preview (2018 년 1 월 6 일)에서 동일한 문제를 확인했습니다. 캐시, SUO 파일 또는 bin / obj 폴더를 삭제하려고하는데 아무런 영향이 없습니다. 처음에는 작동하는 것처럼 보입니다. Visual Studio를 다시 열면 모든 것이 좋아 보일 것입니다. "Rebuild Solution"을 사용하면 IntelliSense 오류가 반환됩니다. Visual Studio의 제거 / 재설치도 시도했습니다.

동일한 버전의 Visual Studio를 사용하는 두 대의 컴퓨터에서 동일한 문제가 발생했습니다.

누락 된 유형에 대한 오류를 살펴보면 모두 두 개의 참조 된 프로젝트에서 비롯된 것으로 보입니다. 이러한 참조 중 하나는 솔루션의 거의 모든 프로젝트에서 사용하는 공유 프로젝트 였지만 그중 하나는 많은 참조가없는 작은 프로젝트였습니다. 작은 프로젝트가 더 큰 공유 프로젝트에서도 참조되었습니다. Visual Studio에서 작은 프로젝트를 언로드하고 다시로드했습니다. 오류가 사라졌습니다! Rebuild Solution에서 오류가 다시 발생하지 않았습니다.

그런 다음 Git 분기를 전환하고 오류가 모두 다시 발생했습니다. 다행히도 작은 프로젝트를 언로드 / 다시로드하는 위의 단계를 반복했는데 오류가 사라졌습니다.

Git 분기를 전환 할 때마다 해당 프로세스를 반복 할 때까지 오류가 다시 발생합니다. 언로드 / 다시로드하는 소규모 프로젝트의 Git 분기간에 변경 사항이 없습니다. 해당 시퀀스가 ​​내 문제를 해결하는 이유를 명확하지 않습니다.


이를 바탕으로 세 개의 "테스트"또는 "아키텍처"관련 프로젝트를 언로드 한 다음 Intellisense 오류로 채워진 프로젝트 (WPF)를 언로드하고 다시로드했습니다. 오류 0 개 중 0 개 :) HgCoder와 비슷한 것을 시도하도록 유도 한 불연속적인 세부 정보에 +1합니다!
Steven_BDawg

VS 2017 사용 15.9.9. 힘내 사용. R # 사용. 나는 정기적으로 지점을 바꾼다. 내 오류는 실제로 모두 IntelliSense입니다. 프로젝트를 언로드하면 "프로젝트"열 (오류 목록 탭에 있음)이 <알 수 없음>으로 이동합니다. 그래서, 그것은 그것을 약간 걷어차는 것처럼 보입니다. 언로드 프로젝트도 나에게 도움이 된 것 같습니다. Clean Solution + Rebuild Solution은 마침내 0 개의 오류를 생성했습니다.
dthal

7

또한이 문제 (특정 오류 메시지가 아닌 제목)와 편집기의 구불 구불 한 선이있었습니다. 첫 번째 구불 구불 한 선은 #include미리 컴파일 된 헤더의 이름을 지정하는 첫 번째 문 아래에 있습니다. Intellisense는 미리 컴파일 된 헤더를 포함하지 못하지만 오류로 나열하지 않습니다. 대신 미리 컴파일 된 헤더의 선언에 의존하는 코드에 대한 오류를 파일 아래에 나열합니다.

Intellisense가 내 환경에서 미리 컴파일 된 헤더를 찾지 못하는 이유는 명명 된 헤더가 실제 파일이 아니기 때문입니다. 미리 컴파일 된 헤더 설정이 올바르게 구성되어있는 한 내가 사용한 다른 VC 또는 gcc 버전이나 2015 컴파일러에있을 필요는 없습니다. Intellisense에 대한 더 이상은 분명히 아닙니다. 2013 년에 그게 달라 졌는지 완전히 확신하지 못합니다.

이것이 여기에보고 된 문제가 될 가능성이없는 경우 해결책은 간단합니다. #include지시문에 지정된대로 미리 컴파일 된 헤더의 pretend-name으로 작은 파일을 만들고 해당 파일에 미리 컴파일 된 헤더의 실제 이름을 포함하도록합니다.

궁금하다면 ... '#include'문에있는 미리 컴파일 된 헤더 이름과 미리 컴파일 된 헤더의 실제 파일 이름이 왜 이렇게 구분됩니까? 이는 미리 컴파일 된 헤더 설정이 올바르게 구성되도록 보장하기 때문입니다. 미리 컴파일 된 헤더가 "#included"이면 포함 할 수있는 파일이 없습니다. 실제 헤더의 실제로 사전 컴파일 된 (이진) 버전을 읽거나 컴파일에 실패합니다. 분명히 단점은 Intellisense뿐만 아니라 코드를 읽는 사람들 을 혼란스럽게한다는 것 입니다.


2

Visual Studio 2017 .vs \ SolutionName \ v15.suo 위치에서 ".suo"파일을 삭제 한 다음 Visual Studio를 다시 시작했습니다. 이것은 나를 위해 일했습니다.


2

오늘 저는 MSVC ++ 2015에서 비슷한 문제를 겪었습니다. 거의 포기하고 IDE 힌트없이 계속하기로 결정했지만 갑자기 문제가있는 프로젝트의 stdafx.h에 표준 라이브러리 헤더가 포함되어 있지 않다는 것을 알게되었습니다. 프로젝트에 사용 된 모든 표준 헤더를 stdafx.h에 포함하면 컴파일 속도가 향상 될 수 있다고 추측했지만 Intellisense 오류도 수정했습니다.


1

stdfax.h추가 포함 디렉터리에 여러 개가 있습니다. stdafx.h의도 한 것이 경로의 첫 번째 인지 확인하십시오 .


1

다른 Visual Studio 버전에서도 비슷한 문제가 발생했습니다.

.suo 또는 .vs 폴더를 삭제해도 도움이되지 않았습니다.

저에게 해결책은 Extension StopOnFirstBuildError가 활성화되어 있다는 것입니다. 빌드 메뉴에서 "첫 번째 오류시 빌드 중지"를 끄고 솔루션이 완전히 빌드 된 후 Intellisense에 표시된 오류가 사라졌습니다.


1

웹 사이트를 게시 할 때만 intellisearch 오류가 표시되었습니다. (ASP / C # 사이트, VS 2017). 그들은 출판물을 깨뜨 렸습니다. 사이트가 로컬에서 잘 실행되었습니다.

사전 컴파일 설정을 선택 취소하여 오류를 해결했으며 정상적으로 게시되었습니다. 게시-> 설정-> 파일 게시 옵션-> 게시 중 사전 컴파일


1

Visual Studio 2019에서 문제는 프로젝트에 NuGet 패키지가 설치된 경우 Git을 사용하여 분기를 변경하는 것입니다. 이 문제를 해결하기 위해 내가 한 일 :

  1. 깨끗한 솔루션
  2. Visual Studio 닫기
  3. 패키지 폴더 삭제
  4. Visual Studio 열기
  5. 패키지 관리자로 이동
  6. 모든 패키지 복원
  7. 재 컴파일
  8. roslyn이 없으면 Visual Studio를 닫고 연 다음 다시 컴파일하십시오.
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.