Visual Studio 2008 jQuery IntelliSense время от времени дает сбой, перезапуская исправления VS - PullRequest
3 голосов
/ 22 мая 2009

Сразу же, это не ваш стандарт «Я не могу заставить JavaScript IntelliSense работать в Visual Studio». Для записи:

  • Я использую Visual Studio 2008
  • У меня установлен SP 1
  • Я установил исправление для файлов документации -vsdoc.js KB958502

Я разрабатываю набор взаимосвязанных плагинов jQuery для упаковки в виде ресурсов в библиотеке классов. Итак, в каталоге у меня есть (в качестве примера):

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

В файле core.js в верхней части файла есть следующее:

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

Тогда в каждом из плагинов # .js у меня есть:

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

IntelliSense работает изначально, даже с учетом дополнений из core.js при работе в плагинах. Однако иногда малейшее изменение, даже добавление и удаление пробела из ссылочных тегов XML или нажатие Ctrl-Shift-J, приводит к страшному «Ошибка обновления JScript IntelliSense: клиентский сценарий Информация IntelliSense не была создана из-за ошибки» во внешней ссылке на скрипт. " За исключением того, что он работал с этой внешней ссылкой на скрипт всего секунду назад!

Для jquery-vsdoc.js я использую Комментарий версии 1.3.2b (это то, что говорится в файле) из http://jqueryjs.googlecode.com/files/jquery-1.3.2-vsdoc2.js. Я опускаю номер версии из файла, чтобы я не должны изменить кучу ссылок, когда они неизбежно обновляются.

Так в чем может быть проблема? Перезапуск Visual Studio оказывается ужасно не элегантным (и трудоемким) решением проблемы.

Ответы [ 4 ]

0 голосов
/ 15 апреля 2010

Вы можете отключить IntelliSense JavaScript в Visual Studio.

Когда SP1 установлен, вы можете отключить IntelliSense JavaScript.
Перейдите в Инструменты, Параметры ...

Появится диалоговое окно параметров.

Перейдите к следующему узлу на левой боковой панели:
Текстовый редактор :: JScript :: General

Отключить следующие параметры (в группе Завершение оператора):
* Авто список участников
* Информация о параметре

0 голосов
/ 04 июня 2009

Сбрасывает ли закрытие и открытие файла состояние?

Откройте диспетчер задач и наблюдайте за процессами. Видите ли вы процесс, называемый "typelibbuilder.exe", запускается при нажатии клавиши Ctrl-Shift-J?

Я пытаюсь представить, какие проблемы могут потребовать перезагрузки VS. Обработка ссылок (к которым относится это сообщение) выполняется в новом отдельном процессе каждый раз, когда вы нажимаете Ctrl-Shift-J (если только обработка не была отключена, в этом случае вы увидите другое сообщение). Похоже, что связь между VS и typelibbuilder или каким-либо другим необходимым компонентом не работает.

В SP1 вам не нужно напрямую ссылаться на файлы "-vsdoc". Если вы ссылаетесь на «foo.js» и рядом с ним находится файл «foo-vsdoc.js», то VS будет использовать версию vsdoc для генерации intellisense. Я сомневаюсь, что это связано с вашей проблемой.

Я знаю, что это не слишком утешительно, но мы значительно улучшили производительность и надежность Javascript Intellisense в Visual Studio 2010. В настоящее время бета-версия доступна подписчикам MSDN (хотя это бета-версия и в ней все еще есть некоторые ошибки) .

Если вы можете получить надежные шаги воспроизведения, вы также можете отправить отчет об ошибке на http://connect.microsoft.com/.

0 голосов
/ 29 июня 2009

Не знаю, поможет ли это вам, но я столкнулся со следующей ошибкой в ​​VS 2008 JS intellisense:

При добавлении jQuery в качестве ссылки во внешний файл, а затем при обновлении JS я получаю:

'XmlHttpRequest не определено' в строке:

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

Кажется, что ядро ​​intellisense JS фактически выполняет некоторый код jQuery (более чем вероятно, чтобы проверить его, чтобы он мог предоставить некоторую дополнительную информацию о нем). Однако это выглядит как window.ActiveXObject является нулевым для движка, и поэтому он попадает в блок 'new XMLHttpRequest ()' - который также завершается ошибкой.

Я взломал обходной путь, который ломает все браузеры, кроме IE - так что это не хорошее решение. Мое исправление изменяет следующее:

    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;
    },

Теперь мой intellisense работает.

0 голосов
/ 22 мая 2009

Вы пытались увеличить время ожидания IntelliSense?

По умолчанию каждый запрос IntelliSense разрешено только 15 секунд для выполнения. это чтобы предотвратить IntelliSense от скрипты с бесконечными циклами. если ты иметь большой сценарий или медленную машину, может иметь смысл увеличить предел тайм-аута. Значение тайм-аута хранить в следующих разделах реестра (в зависимости от того, используете ли вы Экспресс или полный продукт). значение в миллисекундах, поэтому выберите нечто большее, чем 15000.

HKEY_CURRENT_USER \ Software \ Microsoft \ VisualStudio \ 9.0 \ HTML Редактор \ JsFailsafeTimeout HKEY_CURRENT_USER \ Software \ Microsoft \ VWDExpress \ 9,0 \ HTML Редактор \ JsFailsafeTimeout

...