it-swarm.com.de

Visual Studio 2015 oder 2017 zeigt IntelliSense-Fehler, aber die Lösung wird kompiliert

Wir prüfen derzeit das neue Visual Studio 2015 und sind auf ein seltsames Problem mit IntelliSense gestoßen. Wenn ich unsere Hauptlösung mit dem neuen Studio kompiliert habe, ist der Build erfolgreich, es werden jedoch 6 Fehler angezeigt. 

Ich habe festgestellt, dass es sich nicht um einen echten Fehler handelt, sondern nur um einen Intelligenzfehler. Der Code ist definitiv korrekt und alles wurde erfolgreich kompiliert. Der Code ist jedoch rot markiert und Fehler werden in der Fehlerliste angezeigt.

Alle 6 Fehler haben den gleichen Ursprung. Es ist ein einfacher Konstruktoraufruf. Seltsam genug, aber es gibt auch einige Vorkommen des gleichen Konstruktors ohne Fehler.

Die Fehlermeldung:

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>

Das neue Studio wurde auf einem frisch installierten Windows 7 ohne ältere Software (kein VS13) installiert.

Ich habe bereits versucht, die Caches zu löschen, die suo-Datei zu löschen, die Verzeichnisse bin und obj zu löschen, die Lösung zu bereinigen und neu zu erstellen.

Kann mir jemand dieses Verhalten erklären?

101
Ash

Hatte dieses Problem auch bei einem migrierten Projekt, daher habe ich auf die Microsoft.CSharp-DLL verwiesen. In einigen Projekten musste ich die Referenz im Projekt entfernen und erneut hinzufügen.

Ich hatte Tausende von Intellisense-Fehlern und 0 Build-Fehlern. Nach dem Löschen der .suo-Datei und dem Neustart von VS Intellisense sind keine Fehler mehr aufgetreten.

Die Suo-Datei befindet sich relativ zur Quelle in: .vs\SolutionName\v14\.suo 

Kommentar: Beachten Sie, dass *.suo eine versteckte Datei ist.

Bearbeiten: Laut Kommentaren hat VS2017 dasselbe Problem, sodass Sie eine ähnliche Lösung verwenden können: Löschen .vs\SolutionName\v15\.suo 

172
Karel Kral

Hatte ein ähnliches Problem in ASP.Net Core Project von Visual Studio 2017. Die folgenden Schritte haben mir geholfen

  1. Saubere Lösung durchführen
  2. Schließen Sie VS
  3. .Suo Datei löschen & bin/obj Verzeichnisse löschen
  4. VS wieder öffnen
16
Naren

Ähnliches Problem wie andere, aber unterschiedliche Auflösung. Posting, falls ich jemand anderem helfen kann.

Ausführen von Visual Studio 2017 15.5.2. Ich benutze Git und wechsle häufig Zweige. Vor einigen Wochen habe ich angefangen, dass mir Redakteure Fehler anzeigen (alle bezogen auf Typen, die es nicht finden konnte, obwohl Referenzen gültig waren). Compile hat super funktioniert. Das gleiche Problem habe ich in VS 2017 15.6 Preview (6. Januar 2018) bestätigt. Ich würde versuchen, Cache, SUO-Dateien oder bin/obj-Ordner zu löschen und keine Auswirkung. Zunächst scheint es zu funktionieren. Öffnen Sie Visual Studio erneut und alles würde gut aussehen. Verwenden Sie "Rebuild Solution" und die IntelliSense-Fehler würden zurückgegeben. Ich habe sogar versucht, Visual Studio zu deinstallieren/neu zu installieren.

Ich hatte das gleiche Problem auf zwei Computern, beide mit derselben Version von Visual Studio.

Bei der Betrachtung der Fehler bei fehlenden Typen schienen sie alle aus zwei referenzierten Projekten zu stammen. Eine dieser Referenzen war ein gemeinsames Projekt, das von fast jedem anderen Projekt in der Lösung verwendet wurde, aber eine davon war ein kleines Projekt ohne viele Referenzen. Es ist einfach so, dass das kleine Projekt auch von meinem größeren gemeinsamen Projekt referenziert wurde. In Visual Studio habe ich das kleine Projekt entladen und neu geladen. Die Fehler gingen weg! Diese Fehler sind bei Rebuild Solution nicht mehr aufgetreten.

Ich habe dann Git-Zweige gewechselt und die Fehler kamen alle zurück. Glücklicherweise wiederholte ich die obigen Schritte des Entladens/Neuladens des kleinen Projekts, und die Fehler wurden behoben.

Jedes Mal, wenn ich Git-Zweige wechsle, werden die Fehler zurückgegeben, bis ich diesen Vorgang wiederhole. Es gibt keine Änderungen zwischen den Git-Zweigen für das kleinere Projekt, das ich entlade/neu lade. Unklar, warum diese Sequenz mein Problem behebt.

8
HgCoder

Hatte auch dieses Problem (den Titel, nicht die spezifische Fehlermeldung) sowie wackelige Zeilen im Editor. Die erste squiggly-Zeile befindet sich unter der ersten #include-Anweisung, die einen vorkompilierten Header benennt. Intellisense kann den vorkompilierten Header nicht enthalten, listet dies jedoch nicht als Fehler auf. Stattdessen werden Fehler weiter unten in der Datei aufgelistet, die sich auf Code beziehen, der (zu Recht) auf Deklarationen im vorkompilierten Header beruht.

Der Grund, warum Intellisense den vorkompilierten Header in meiner Umgebung nicht findet, ist, dass der genannte Header keine tatsächliche Datei ist. Es muss sich nicht in einer anderen VC - oder gcc-Version, die ich verwendet habe, noch im 2015er Compiler befinden, solange die vorkompilierten Header-Einstellungen korrekt konfiguriert sind. Anscheinend nicht mehr für Intellisense. Ich bin mir nicht ganz sicher, ob es 2013 anders war, vielleicht habe ich es nie bemerkt.

In dem unwahrscheinlichen Fall, dass dies das hier beschriebene Problem wäre, ist die Lösung einfach: Erstellen Sie eine kleine Datei mit dem Namen des vorkompilierten Headers, wie in den Anweisungen #include angegeben, und lassen Sie den tatsächlichen Namen des vorkompilierten Headers angeben .

Wenn Sie sich fragen, warum diese Unterscheidung zwischen dem Namen des vorkompilierten Headers in der Anweisung "#include" und dem tatsächlichen Dateinamen des vorkompilierten Headers besteht? Genau deshalb, weil sichergestellt wird, dass vorkompilierte Header-Einstellungen korrekt konfiguriert werden. Überall dort, wo ein vorkompilierter Header "#inclosed" ist, gibt es keine Datei, die eingeschlossen werden könnte. Entweder eine tatsächlich vorkompilierte (binäre) Version des eigentlichen Headers wird gelesen, oder die Kompilierung schlägt fehl. Offensichtlich ist ein Nachteil, dass er Leute den Code liest, nicht nur Intellisense.

6
Stein

Visual Studio 2017 Ich habe die ".suo" -Datei von Speicherort .vs\SolutionName\v15.suo .__ gelöscht. Anschließend wurde Visual Studio neu gestartet. Das hat bei mir funktioniert.

2
Saurabh Raoot

Heute habe ich ein ähnliches Problem mit MSVC++ 2015. Ich hätte fast aufgegeben und entschied mich dazu, ohne IDE Hinweise weiterzumachen, aber gelegentlich habe ich bemerkt, dass stdafx.h des Teilprojekts, mit dem ich Probleme hatte, keine enthält Standardbibliothekskopfzeilen. Ich schlug vor, dass es die Modulkompilierung verlangsamen könnte, aber die Einbeziehung der dortigen Standard-Header fixierte auch Intellisense.

0
Minor Threat

Ich habe die Intellisearch-Fehler nur beim Veröffentlichen einer Website gesehen. (ASP/C # Site, VS 2017). Sie haben die Veröffentlichung gebrochen. Site lief gut vor Ort.

Die Fehler wurden durch Deaktivieren der Einstellung für das Vorkompilieren aufgehoben, und es wurde fein veröffentlicht . Veröffentlichen -> Einstellungen -> Optionen für das Veröffentlichen von Dateien -> Während der Veröffentlichung vorkompilieren

0
Rahn

Ich hatte ein ähnliches Problem mit verschiedenen Visual Studio-Versionen.

Das Löschen des Ordners .suo oder .vs hat mir nicht geholfen.

Die Lösung für mich war, dass ich die Erweiterung StopOnFirstBuildError aktiv hatte. Nach dem Deaktivieren von "Stop build on first error" im Build-Menü und nachdem die Lösung vollständig erstellt wurde, sind die von Intellisense angezeigten Fehler verschwunden.

0
Fabian

Ich hatte mehrere stdfax.h in Additional Include Directories. Stellen Sie sicher, dass der stdafx.h, den Sie beabsichtigten, an erster Stelle in Ihrem Pfad steht.

0
slater