So erhalten Sie IntelliSense, damit es in Visual Studio 2008 zuverlässig funktioniert
Lesezeit: 5 Minuten
Markus Ingram
Weiß jemand, wie man IntelliSense dazu bringt, zuverlässig zu arbeiten, wenn man in C/C++-Projekten arbeitet? Es scheint für etwa 1 von 10 Dateien zu funktionieren. Visual Studio 2005 scheint viel besser zu sein als 2008.
Bearbeiten: Obwohl dies nicht unbedingt eine Lösung ist, wird hier die Problemumgehung bereitgestellt:
So erhalten Sie IntelliSense, damit es in Visual Studio 2008 zuverlässig funktioniert
Ist wahrscheinlich die beste Wahl, wenn ich ein anständiges IntelliSense-System haben möchte.
John Richardson
Natives C++-IntelliSense funktioniert in keiner Version von Visual Studio zuverlässig. Ich finde, es gibt zwei häufige Probleme:
1) Header-Dateipfade sind nicht korrekt eingerichtet. Wenn Sie einen Typ finden, bei dem Intellisense nicht funktioniert, verwenden Sie die IDE, um durch jede Header-Datei zu klicken, um diejenige zu finden, die den Typ enthält. (Klicken Sie mit der rechten Maustaste auf #include und wählen Sie Dokument öffnen…). Wenn dies fehlschlägt, bevor Sie zu der Datei gelangen, die den Typ deklariert, dann ist dies Ihr Problem. Stellen Sie sicher, dass die Suchpfade für Header-Dateien korrekt eingerichtet sind.
Und,
2) Die Intellisense-Datenbank ist beschädigt. Das passiert die ganze Zeit. Sie müssen die Lösung schließen, die .ncb-Datei löschen und die Lösung dann erneut öffnen. Ich habe das Makro, das ich dafür verwende, als Antwort auf eine andere Frage hier gepostet.
Der Präprozessor kann auch Intellisense verwirren – stellen Sie also sicher, dass alle #defines während des Builds auch für Intellisense verfügbar sind. Ansonsten wüsste ich nicht was da noch kaputt gehen kann. Ich habe keine besonderen Probleme mit Vorwärtsdeklarationen gesehen.
Das ist eine hilfreiche Lösung, um die NCB-Datei zu löschen. 🙂
– sn3ek
6. Oktober 2009 um 18:57 Uhr
Hinweis: Intellisense wurde in VS2010 behoben.
– Billy ONeal
5. Dezember 2010 um 17:19 Uhr
Verdammt, Microsoft! Ich habe 544 #includes in diesem Projekt (ohne die darin verschachtelten #includes und unzählige #defines zu zählen). Danke an das Plakat für die Idee.
– c00000fd
25. November 2013 um 0:08 Uhr
+1 Das Löschen der sdf (die neue Erweiterung von VS2010 für das, was ncb in ’08 war) hat bei mir funktioniert. Ich habe die VS-Lösung geschlossen, die SDF-Datei der Lösung gelöscht, die Lösung erneut geöffnet, die Lösung neu erstellt und voila.
– John
9. Dezember 2013 um 19:55 Uhr
Steve Gury
Ich habe auch festgestellt, dass Intellisense bei einem großen Projekt manchmal “verloren” geht. Wieso den? Keine Ahnung.
Aus diesem Grund haben wir gekauft Visuelle Unterstützung (aus Tomaten-Software) und deaktivierte Intellisense durch Löschen der dll feacp.dll im Visual Studio-Unterverzeichnis (C:\Programme\Microsoft Visual Studio 8\VC\vcpackages)
Das ist keine Lösung, sondern nur ein Workaround.
+1 zum Deaktivieren des Intellisense. Die Makros, die ich 2005 zum Deaktivieren verwendet habe, funktionierten 2008 nicht mehr.
– Sturmnetz
8. November 2010 um 9:30 Uhr
Ich habe an anderer Stelle gelesen, dass das Löschen dieser DLL vorsichtig gehandhabt werden sollte, das Erstellen eines Ordners mit dem Namen “Solutionname.ncb” sollte bevorzugt werden. Führt aber bei jedem Start zu lästigen Fehlermeldungen. Und +1 für die Erwähnung von VAX.
– SvenS
2. März 2012 um 11:27 Uhr
Dies ist ab VS2010 immer noch ein guter Rat, da Intellisense in VS2010 sehr langsam ist (obwohl es jetzt möglich ist, Intellisense über die Konfigurationsseite in VS zu deaktivieren).
– Benj
26. März 2012 um 13:03 Uhr
Nick McCowin
Es sieht so aus, als gäbe es Hoffnung am Horizont für diejenigen von uns, die Visual Assist nicht erhalten können:
Aber keine Unterstützung für C++/CLI in der ersten Version von VS2010 :/
– Dämonencodeaffe
1. Juli 2009 um 9:49 Uhr
Sara Chipp
Hast du irgendwelche Add-Ins installiert (oder deinstalliert)? Ich finde, das wirkt sich auf meinen Intellisense aus.
Stellen Sie außerdem sicher, dass Ihre Tools->Optionen->Text-Editor->Alle Sprachen “Mitglieder automatisch auflisten” und “Parameterinformationen” abgehakt sind.
Ich verwende VS2008 nicht für C++, nur VB & C#, aber ich finde, wenn Intellisense nicht mehr funktioniert (gilt für VS2003/2005/2008), liegt es daran, dass etwas im Projekt/in der Datei kaputt ist – normalerweise eine schlechte Referenz oder ein schlechter Code.
VB und C# haben eine viel bessere Intellisense-Unterstützung, da sie die referenzierten Assemblys reflektieren können, um den Intellisense-Baum zu erstellen.
C++ muss die Include-Dateien für Funktionsprototypen durchlaufen, und wenn die Pfade nicht korrekt sind, findet es nicht alle Prototyp-Header.
Mein Fix für itellisense war erforderlich, nachdem dieses schreckliche Refactor-Dienstprogramm meinen Code zerhackt hatte. Das Problem war eine Klassen-Header-Datei, die ein #include von sich selbst enthielt. Der rekursive Verweis zerstört itellisense. Ein Symptom dafür ist, wenn itellisense andere Klassen sehen kann, aber nicht die aktuelle. Ebenfalls:
Verwenden Sie einmal #pragma, um doppelte Header-Loads zu vermeiden
Wenn das Projekt jetzt sehr viel länger zum Laden benötigt, versucht itellisense, den Konflikt zu verstehen, der dann die fehlende Unterstützung für die Fertigstellung verursacht.
Oft ist nur ein Klassenobjekt betroffen, das zeigt Ihnen, welche Dateien (normalerweise Header) Sie sich ansehen müssen.
Gemeinschaft
@John Richardson / @Jonathan Holland
Meine Includes sind korrekt eingerichtet, da gibt es keine Probleme. Ich habe auch den NCB-Neuaufbau mehrmals versucht, aber er behebt ihn nie zu 100%.
Ich habe das Gefühl, dass es mit Vorwärtsdeklarationen von Klassen zu tun haben könnte. Um beispielsweise die Komplexität von Includes in Header-Dateien zu reduzieren, machen wir normalerweise so etwas wie:
class MyPredeclared;
class SomeOtherClass
{
private:
MyPredeclared* m_pPointer;
}
Ich frage mich, ob es das vermasselt? Irgendwelche anderen Ideen? Es wird definitiv schlimmer, je größer Ihr Projekt wird.
13973500cookie-checkSo erhalten Sie IntelliSense, damit es in Visual Studio 2008 zuverlässig funktioniertyes