Visual Studio 2015 หรือ 2017 แสดงข้อผิดพลาด IntelliSense แต่โซลูชันจะคอมไพล์


122

ขณะนี้เรากำลังประเมิน Visual Studio 2015 ใหม่และพบปัญหาแปลก ๆ กับ IntelliSense เมื่อฉันรวบรวมโซลูชันหลักของเรากับสตูดิโอใหม่การสร้างจะประสบความสำเร็จ แต่ยังคงมีข้อผิดพลาด 6 ข้อปรากฏขึ้น

ฉันค้นพบว่ามันไม่ใช่ข้อผิดพลาดจริง แต่เป็นข้อผิดพลาด intellisense เท่านั้น รหัสถูกต้องแน่นอนและรวบรวมทุกอย่างเรียบร้อยแล้ว อย่างไรก็ตามรหัสถูกทำเครื่องหมายเป็นสีแดงและข้อผิดพลาดปรากฏในรายการข้อผิดพลาด

ข้อผิดพลาดทั้ง 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>

สตูดิโอใหม่ได้รับการติดตั้งบน Windows 7 ที่เพิ่งติดตั้งใหม่โดยไม่มีซอฟต์แวร์เดิม (ไม่ใช่ VS13)

ฉันได้พยายามล้างแคชแล้วลบไฟล์ suo ลบไดเร็กทอรี bin และ obj ทำความสะอาดและสร้างโซลูชันใหม่เป็นต้น แต่ไม่มีอะไรได้ผล

ใครช่วยอธิบายพฤติกรรมนั้นให้ฉันฟังได้ไหม?


2
ตัวแยกวิเคราะห์ที่ใช้โดย Intellisense ไม่เหมือนกับคอมไพเลอร์ที่ใช้ในการคอมไพล์โค้ดจริงๆ
ทำใจให้สบาย

1
เหตุการณ์นี้เกิดขึ้นใน VS 2013 ด้วย อาจเป็นไปได้ว่า VS ยังไม่เสร็จสิ้นการสร้างดัชนีฐานรหัสทั้งหมด หากคอมไพล์และทำงานได้ตามที่คาดไว้ฉันจะไม่ให้ความสนใจกับมัน
รหัสต่างกัน

2
@chill ใน VS2015 ควรเป็นตัวแยกวิเคราะห์เดียวกันซึ่งเป็นส่วนหนึ่งของ Roslyn
Lasse V.Karlsen

1
คุณสามารถสร้างโปรเจ็กต์ขนาดเล็กที่ทำให้เกิดปัญหาซ้ำได้หรือไม่? ถ้าเป็นเช่นนั้นคุณสามารถโพสต์รหัสได้หรือไม่?
Lasse V.Karlsen

คลาสเป็นบางส่วนหรือเป็นส่วนใดส่วนหนึ่งของคลาสที่สร้างขึ้นในเวลาคอมไพล์?
Panagiotis Kanavos

คำตอบ:


58

มีปัญหากับโปรเจ็กต์ที่ย้ายข้อมูลด้วยดังนั้นฉันจึงอ้างถึง dll Microsoft.CSharp ในบางโปรเจ็กต์ฉันจำเป็นต้องลบและเพิ่มข้อมูลอ้างอิงในโปรเจ็กต์อีกครั้ง


3
ฉันต้องทำสิ่งนี้เมื่อสมาชิกในทีมเพิ่มโปรเจ็กต์ใหม่ลงในโซลูชันและย้ายไฟล์ cs บางไฟล์จากโปรเจ็กต์ที่มีอยู่ไปยังโปรเจ็กต์ใหม่ เมื่อฉันได้รับข้อมูลล่าสุดฉันเห็นข้อผิดพลาดมากมาย แต่ฉันสามารถรวบรวมและเรียกใช้ การทิ้งและเพิ่มการอ้างอิงไปยังโปรเจ็กต์ใหม่จากโปรเจ็กต์ที่ไม่เหมาะสมได้ผลสำหรับฉัน
บิล

1
สถานการณ์เดียวกันกับที่ Bill อธิบายว่าเกิดขึ้นกับเรา บางชั้นเรียนถูกย้ายไปยังโครงการใหม่ ดูเหมือนว่า Visual Studio ไม่ได้อัปเดตแคช Intellisense เมื่อนำเข้าการอ้างอิงโครงการใหม่จากตัวควบคุมแหล่งที่มา การป้อนข้อมูลอ้างอิงซ้ำด้วยตนเองบังคับให้ VS ทำเช่นนั้น
Peter Macej

2
โซลูชันคอมไพล์ แต่แสดงข้อผิดพลาดอย่างไม่น่าเชื่อในบางไฟล์ ไม่มีข้อผิดพลาดที่แสดงใน "Release" เพียงแค่ใน Debug ลบ Microsoft.CSharp และข้อผิดพลาดหายไปขอบคุณ!
Michael

@ Michael ขอบคุณสำหรับคำแนะนำนั้น ฉันมีปัญหาเดียวกัน ไม่มีข้อผิดพลาดใน Release แต่มีข้อผิดพลาดมากมายใน Debug
user2061057

หากคลาสที่กล่าวถึงเป็นรหัสของคุณเองคุณสามารถยกเว้นจากนั้นรวมไฟล์ที่มีคลาส ควรทริกเกอร์ VS เพื่ออัปเดต IntelliSense #awfulbug
David S.

198

ฉันมีข้อผิดพลาด intellisense หลายพันรายการและข้อผิดพลาดในการสร้าง 0 รายการ หลังจากลบ.suoไฟล์และรีสตาร์ท VS intellisense ข้อผิดพลาดจะหายไป

Suo ไฟล์อยู่ในแหล่งที่มาใน: .vs\SolutionName\v14\.suo

ตามความคิดเห็น: ระวังที่*.suoเป็นไฟล์ที่ซ่อนอยู่

แก้ไข: ตามความคิดเห็น VS2017 มีปัญหาเดียวกันดังนั้นคุณสามารถใช้วิธีแก้ปัญหาที่คล้ายกัน: ลบvs\SolutionName\v15\.suo


7
หมายเหตุ: *.suoไฟล์อาจถูกซ่อนในบางกรณี ดังนั้นคุณต้องเปิดใช้งานView Hidden filesตัวเลือกจาก windows explorer
Athafoud

6
การฆ่า. suo ไม่มีผลกับฉัน แต่การลบ bin และ obj dir แล้วสร้างโซลูชันขึ้นมาใหม่
Holger Böhnke

การลบไฟล์. suo ไม่ได้ช่วยแก้ปัญหาให้ฉัน (ใน VS2015) ฉันได้รับจาวาสคริปต์สีแดงปลอมที่อ้างอิงคุณสมบัติจากโค้ดเบื้องหลัง: <%=Foo%>บอกว่าตัวแปรไม่ได้รับการประกาศ แต่ทุกอย่างทำงานที่รันไทม์
ทิม

ฉันไม่แน่ใจ 100% แต่อาจมีการแก้ไขข้อผิดพลาดมาร์กอัปที่ไม่ถูกต้องที่ฉันได้รับจาก XAML
Geordie

หา. - ชื่อ "* suo" -exec rm -rf {} \;
Derek Greer

20

พบปัญหาที่คล้ายกันใน Visual Studio 2017 ASP.Net Core Project ขั้นตอนต่อไปนี้เป็นเคล็ดลับสำหรับฉัน

  1. ดำเนินการ Clean Solution
  2. ปิด VS
  3. ลบไฟล์. suo และลบไดเร็กทอรี bin / obj
  4. เปิด VS อีกครั้ง

1
วิธีนี้ใช้ได้ผล แต่เป็นเรื่องที่น่าเบื่อที่ต้องทำเป็นครั้งคราว ฉันมักจะมีปัญหานี้เสมอเมื่อสร้างในโหมดเผยแพร่ Strange VS ไม่สามารถคิดออกได้ด้วยตัวเอง
nawfal

12

ปัญหาที่คล้ายกัน แต่ความละเอียดต่างกัน โพสต์เผื่อว่าฉันจะช่วยคนอื่นได้

กำลังเรียกใช้ Visual Studio 2017 15.5.2 ฉันใช้ Git และเปลี่ยนสาขาบ่อยๆ หลายสัปดาห์ก่อนฉันเริ่มให้บรรณาธิการแสดงข้อผิดพลาด (ทั้งหมดที่เกี่ยวข้องกับประเภทที่ไม่พบแม้ว่าการอ้างอิงจะถูกต้องก็ตาม) คอมไพล์ทำงานได้ดี ฉันยืนยันปัญหาเดียวกันใน VS 2017 15.6 Preview (6 ม.ค. 2018) ฉันจะพยายามลบแคชไฟล์ SUO หรือโฟลเดอร์ bin / obj และไม่มีผลกระทบ ตอนแรกดูเหมือนจะใช้งานได้ เปิด Visual Studio อีกครั้งและทุกอย่างจะดูดี ใช้ "สร้างโซลูชันใหม่" และข้อผิดพลาด IntelliSense จะส่งกลับ ฉันลองถอนการติดตั้ง / ติดตั้ง Visual Studio ใหม่ด้วยซ้ำ

ฉันมีปัญหาเดียวกันในสองเครื่องทั้งที่มี Visual Studio เวอร์ชันเดียวกัน

จากการดูข้อผิดพลาดเกี่ยวกับประเภทที่ขาดหายไปทั้งหมดดูเหมือนว่ามาจากโครงการที่อ้างอิงสองโครงการ หนึ่งในการอ้างอิงเหล่านั้นคือโครงการที่ใช้ร่วมกันซึ่งใช้โดยโครงการอื่น ๆ ทั้งหมดในโซลูชัน แต่หนึ่งในนั้นเป็นโครงการขนาดเล็กที่ไม่มีการอ้างอิงมากมาย มันก็เกิดขึ้นเช่นกันที่โครงการขนาดเล็กถูกอ้างอิงโดยโครงการที่ใช้ร่วมกันขนาดใหญ่ของฉัน ใน Visual Studio ฉันยกเลิกการโหลดโปรเจ็กต์ขนาดเล็กและโหลดซ้ำ ข้อผิดพลาดหายไป! ข้อผิดพลาดเหล่านี้ไม่ได้กลับมาใน Rebuild Solution

จากนั้นฉันเปลี่ยนสาขา Git และข้อผิดพลาดทั้งหมดกลับมา โชคดีที่ฉันทำตามขั้นตอนข้างต้นในการยกเลิกการโหลด / โหลดโครงการขนาดเล็กซ้ำแล้วซ้ำอีกและข้อผิดพลาดก็หายไป

ทุกครั้งที่ฉันเปลี่ยนสาขา Git ข้อผิดพลาดจะกลับมาจนกว่าฉันจะทำขั้นตอนนั้นซ้ำ มีการเปลี่ยนแปลงเป็นศูนย์ระหว่างสาขา Git สำหรับโปรเจ็กต์ขนาดเล็กที่ฉันยกเลิกการโหลด / โหลดซ้ำ ไม่ชัดเจนว่าเหตุใดลำดับนั้นจึงแก้ไขปัญหาของฉัน


ด้วยเหตุนี้ฉันจึงยกเลิกการโหลดโปรเจ็กต์ที่เกี่ยวข้องกับ "Test" หรือ "Architecture" สามโปรเจ็กต์จากนั้นยกเลิกการโหลดและรีโหลดโปรเจ็กต์ที่เต็มไปด้วยข้อผิดพลาด Intellisense (WPF) 0 จาก 0 ข้อผิดพลาด :) +1 สำหรับรายละเอียดที่ไม่ต่อเนื่องทำให้ฉันลองสิ่งที่คล้ายกับคุณ HgCoder!
Steven_BDawg

ใช้ VS 2017 15.9.9 ใช้ Git ใช้ R #. ฉันสลับสาขาเป็นประจำเช่นกัน ข้อผิดพลาดของฉันคือ IntelliSense ทั้งหมด ฉันสังเกตเห็นการยกเลิกการโหลดของโครงการทำให้คอลัมน์ "โครงการ" (ในแท็บรายการข้อผิดพลาด) ไปที่ <ไม่ทราบ> ดูเหมือนจะเตะมันสักหน่อย ดูเหมือนว่าการยกเลิกการโหลดโครงการจะได้ผลสำหรับฉันเช่นกัน Clean Solution + Rebuild Solution ในที่สุดก็ให้ข้อผิดพลาด 0 ข้อ
dthal

7

ก็มีปัญหานี้เช่นกัน (ชื่อเรื่องไม่ใช่ข้อความแสดงข้อผิดพลาดเฉพาะ) รวมถึงบรรทัดที่ไม่เป็นระเบียบในตัวแก้ไข บรรทัดแรก squiggly อยู่ภายใต้#includeคำสั่งแรกซึ่งตั้งชื่อส่วนหัวที่คอมไพล์ไว้ล่วงหน้า Intellisense ไม่สามารถรวมส่วนหัวที่คอมไพล์ไว้ล่วงหน้า แต่ไม่ได้ระบุว่าเป็นข้อผิดพลาด แต่จะแสดงข้อผิดพลาดลงไปในไฟล์ในโค้ดที่ (อย่างถูกต้องมาก) อาศัยการประกาศในส่วนหัวที่คอมไพล์ไว้ล่วงหน้า

สาเหตุที่ Intellisense ไม่พบส่วนหัวที่คอมไพล์ไว้ล่วงหน้าในสภาพแวดล้อมของฉันคือส่วนหัวที่มีชื่อว่าไม่ใช่ไฟล์จริง ไม่จำเป็นต้องอยู่ใน VC หรือ gcc เวอร์ชันอื่นที่ฉันใช้หรือในคอมไพเลอร์ปี 2015 ตราบใดที่การตั้งค่าส่วนหัวที่คอมไพล์ไว้ล่วงหน้าได้รับการกำหนดค่าอย่างถูกต้อง ไม่ชัดเจนอีกต่อไปสำหรับ Intellisense ฉันไม่แน่ใจว่ามันแตกต่างกันอย่างสิ้นเชิงในปี 2013 บางทีฉันอาจจะไม่เคยสังเกตเห็น

ในกรณีที่ไม่น่าจะเป็นปัญหาที่รายงานไว้ที่นี่วิธีแก้ปัญหานั้นง่าย: สร้างไฟล์ขนาดเล็กที่มีชื่อหลอกของส่วนหัวที่คอมไพล์ไว้ล่วงหน้าตามที่ระบุไว้ใน#includeคำสั่งและปล่อยให้ไฟล์นั้นมีชื่อจริงของส่วนหัวที่คอมไพล์ไว้ล่วงหน้า

หากคุณสงสัยว่า ... ทำไมความแตกต่างระหว่างชื่อส่วนหัวที่คอมไพล์ไว้ล่วงหน้าในคำสั่ง '#include' กับชื่อไฟล์จริงของส่วนหัวที่คอมไพล์ไว้ล่วงหน้า แม่นยำเพราะรับประกันว่าการตั้งค่าส่วนหัวที่คอมไพล์ไว้ล่วงหน้าได้รับการกำหนดค่าอย่างถูกต้อง ที่ใดก็ตามที่ส่วนหัวที่คอมไพล์ไว้ล่วงหน้าคือ "#included" จะไม่มีไฟล์ใด ๆ ที่สามารถรวมได้ มีการอ่านส่วนหัวจริงที่คอมไพล์ไว้ล่วงหน้า (ไบนารี) หรือการคอมไพล์ล้มเหลว เห็นได้ชัดว่าข้อเสียคือทำให้คนอ่านโค้ดสับสนไม่ใช่แค่ Intellisense


2

Visual Studio 2017 ฉันได้ลบไฟล์ ".suo" จากตำแหน่ง. vs \ SolutionName \ v15.suo แล้วรีสตาร์ท Visual studio สิ่งนี้ได้ผลสำหรับฉัน


2

วันนี้ฉันมีปัญหาคล้ายกันกับ MSVC ++ 2015 ฉันเกือบจะยอมแพ้และตัดสินใจที่จะดำเนินการต่อโดยไม่มีคำแนะนำ IDE แต่ทันใดนั้นฉันก็สังเกตเห็นว่า stdafx.h ของโครงการที่ฉันมีปัญหาไม่มีส่วนหัวไลบรารีมาตรฐานใด ๆ ฉันคาดเดาว่าการรวมส่วนหัวมาตรฐานทั้งหมดที่ใช้ในโปรเจ็กต์ใน stdafx.h อาจช่วยเพิ่มความเร็วในการรวบรวมอย่างไรก็ตามการแก้ไขข้อผิดพลาด Intellisense ก็เช่นกัน


1

ฉันมีหลายstdfax.hไดเรกทอรีรวมเพิ่มเติม ตรวจสอบให้แน่ใจว่าstdafx.hคุณตั้งใจไว้เป็นอันดับแรก


1

ฉันมีปัญหาคล้ายกันกับ Visual Studio เวอร์ชันอื่น

การลบโฟลเดอร์. suo หรือ. vs ไม่ได้ช่วยอะไรสำหรับฉัน

ทางออกสำหรับฉันคือฉันมีส่วนขยาย StopOnFirstBuildError ที่ใช้งานอยู่ หลังจากปิด "Stop build on first error" ในเมนู build และหลังจากสร้างโซลูชันเสร็จสมบูรณ์ข้อผิดพลาดที่ Intellisense แสดงก็หายไป


1

ฉันเห็นข้อผิดพลาด intellisearch เฉพาะเมื่อเผยแพร่เว็บไซต์ (ไซต์ ASP / C #, VS 2017) พวกเขาทำลายการเผยแพร่ ไซต์ทำงานได้ดีในพื้นที่

ล้างข้อผิดพลาดโดยยกเลิกการเลือกการตั้งค่าเพื่อคอมไพล์ล่วงหน้าและเผยแพร่ได้ดี เผยแพร่ -> การตั้งค่า -> ตัวเลือกการเผยแพร่ไฟล์ -> คอมไพล์ล่วงหน้าระหว่างการเผยแพร่


1

ใน Visual Studio 2019 ปัญหาคือการเปลี่ยนสาขาด้วย Git เมื่อมีการติดตั้งแพ็คเกจ NuGet ในโครงการ สิ่งที่ฉันทำเพื่อแก้ปัญหานี้:

  1. น้ำยาทำความสะอาด
  2. ปิด Visual Studio
  3. ลบโฟลเดอร์แพ็คเกจ
  4. เปิด Visual Studio
  5. ไปที่ Package Manager
  6. กู้คืนแพ็คเกจทั้งหมด
  7. คอมไพล์
  8. หาก roslyn หายไปให้ปิดและเปิด Visual Studio จากนั้นคอมไพล์ใหม่
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.