2009-05-21 3 views
3

Auf den ersten Blick ist dies nicht Ihr Standard "Ich kann Javascript IntelliSense nicht in Visual Studio arbeiten." Für das Protokoll:Visual Studio 2008 jQuery IntelliSense schlägt sporadisch fehl und startet VS-Fixes neu

  • Ich bin mit Visual Studio 2008
  • Ich habe SP 1 installiert
  • ich den Hotfix für -vsdoc.js Dokumentation installiert haben Dateien KB958502

Ich entwickle Eine Suite von miteinander verbundenen jQuery-Plugins, die als Ressourcen in einer Klassenbibliothek zusammengefasst werden. Also in einem Verzeichnis, ich habe (als Beispiel):

  • jquery-vsdoc.js
  • core.js
  • plug1.js
  • plug2.js

Im Kern .js, ich habe folgendes am Anfang der Datei:

/// <reference path="jquery-vsdoc.js" /> 

Dann in jedem der Stecker # Js, ich habe:

/// <reference path="jquery-vsdoc.js" /> 
/// <reference path="core.js" /> 

Die IntelliSense funktioniert zunächst auch die Zugänge aus core.js auch wenn in den Plugins arbeiten. Manchmal führt die geringste Änderung, sogar das Hinzufügen und Entfernen eines Leerzeichens aus den Referenz-XML-Tags oder das Drücken von Strg-Umschalt-J, zu dem gefürchteten Fehler "Fehler beim Aktualisieren von JScript IntelliSense: Clientseitige IntelliSense-Skriptdaten wurden aufgrund eines Fehlers nicht generiert in einem externen Skript-Verweis. " Außer dass es vor einer Sekunde mit diesem externen Skript-Verweis gearbeitet hat!

Für die jquery-vsdoc.js verwende ich Comment Version 1.3.2b (das ist, was es in der Datei sagt) von http://jqueryjs.googlecode.com/files/jquery-1.3.2-vsdoc2.js. Ich lasse die Versionsnummer aus der Datei weg, so dass ich nicht eine Reihe von Referenzen ändern muss, wenn sie unweigerlich aktualisiert wird.

Also was könnte das Problem sein? Neustart von Visual Studio erweist sich als eine entsetzlich unelegante (und zeitraubende) Problemumgehung.

Antwort

0

Haben Sie versucht, das IntelliSense-Zeitlimit zu erhöhen?

standardmäßig jede IntelliSense Anfrage nur 15s erlaubt auszuführen. Dieses soll IntelliSense von Skripte mit Endlosschleifen verhindern. Wenn Sie ein großes Skript oder eine langsamere Maschine haben, kann es sinnvoll sein, die Timeout-Grenze zu erhöhen. Der Zeitüberschreitungswert speichert innerhalb der folgenden Registrierungsschlüssel (abhängig davon, ob Sie Express oder das vollständige Produkt verwenden). Der Wert ist in Millisekunden so größer etwas wählen als 15000.

HKEY_CURRENT_USER \ Software \ Microsoft \ Visualstudio \ 9.0 \ HTML Editor \ JsFailsafeTimeout HKEY_CURRENT_USER \ Software \ Microsoft \ VWDExpress \ 9.0 \ HTML Editor \ JsFailsafeTimeout

+0

Guter Vorschlag! Leider (oder zum Glück?) Habe ich keine großen Skripte oder eine langsame Maschine. Der Fehler ist sofort, es dauert nicht 15 Sekunden. –

0

Schließt das Schließen und Öffnen der Datei den Status?

Öffnen Sie den Task-Manager und beobachten Sie die Prozesse. Sehen Sie, dass ein Prozess namens "typelibbuilder.exe" gestartet wird, wenn Sie Strg-Shift-J drücken?

Ich versuche, Image, welche Art von Problemen möglicherweise einen Neustart von VS erfordern. Die Verarbeitung von Referenzen (auf die sich diese Nachricht bezieht) erfolgt bei jedem Drücken von Ctrl-Shift-J in einem neuen und separaten Prozess (es sei denn, die Verarbeitung wurde deaktiviert. In diesem Fall würden Sie eine andere Nachricht sehen). Es klingt fast wie die Kommunikation zwischen VS und typelibbuilder oder eine andere notwendige Komponente schlägt fehl.

In SP1 sollten Sie nicht direkt auf die "-vsdoc" -Dateien verweisen. Wenn Sie auf "foo.js" verweisen und eine "foo-vsdoc.js" -Datei daneben steht, verwendet VS die vsdoc-Version, um Intellisense zu generieren. Ich bezweifle, dass das mit deinem Problem zusammenhängt.

Ich weiß, das ist nicht viel Trost, aber wir haben die Leistung und Zuverlässigkeit von Javascript Intellisense in Visual Studio 2010 drastisch verbessert. Beta1 ist derzeit für MSDN-Abonnenten verfügbar (obwohl es Beta ist und es noch einige Bugs gibt).

Wenn Sie zuverlässige Repro Schritte erhalten können, können Sie auch einen Fehlerbericht an http://connect.microsoft.com/ Datei.

0

Ich weiß nicht, ob dies wird Ihnen helfen, aber ich habe die folgenden Fehler in VS 2008 JS intellisense gestoßen:

Wenn jQuery als Referenz in einer externen Datei hinzufügen und dann JS Ich aktualisiere ich:

‚XmlHttpRequest ist nicht definiert‘ auf der Linie:

return window.ActiveXObject ? new ActiveXObject("Microsoft.XMLHTTP") : new XMLHttpRequest(); 

es ist wie die JS IntelliSense-Engine scheint tatsächlich etwas von der jQuery-Code (mehr als wahrscheinlich Ausführung um es zu inspizieren, so dass es einige weitere Informationen zur Verfügung stellen kann über es). Allerdings sieht es wie window aus. ActiveXObject ist null für die Engine und fällt daher in den 'new XMLHttpRequest()' Block - was ebenfalls fehlschlägt.

gehackt ich eine Abhilfe, die alle Browser außer IE bricht - so keine gute Lösung. Mein Fix ändert Folgendes:

xhr: function() 
    { 
     // hack to fix VS 2008 intellisense... note this breaks any browser 
     // except IE 
     var objXhr = { open: function() { }, 
      setRequestHeader: function() { } 
     }; 

     return window.ActiveXObject ? new ActiveXObject("Microsoft.XMLHTTP") : objXhr; 
    }, 

Jetzt funktioniert meine Intellisense.

0

Sie können JavaScript intellisense in Visual Studio deaktivieren.

Wenn SP1 installiert ist, können Sie JavaScript intellisense deaktivieren.
Gehen Sie zu Extras, Optionen ...

Der Dialog Optionen wird angezeigt.

Navigieren Sie zu dem folgenden Knoten in der linken seitigen Platte:
Texteditor :: JScript :: General

Deaktivieren Sie die folgenden Optionen (in der Anweisungsabschluss-Gruppe):
* Auto-Liste Mitglieder
* Parameter Information

+0

Das würde den Fehler loswerden. Es ist jedoch nicht der Fehler, der mich nervt. Das IntelliSense ist großartig und ich mag es - ich will, dass es funktioniert! Hoffentlich machen die Verbesserungen in Visual Studio 2010 diese Frage unmöglich. –