Visual Studio 2008 jQuery IntelliSense время от времени выходит из строя, перезапуская исправления VS

StackOverflow https://stackoverflow.com/questions/895270

Вопрос

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

  • Я использую Visual Studio 2008
  • Я установил SP1
  • Я установил исправление для файлов документации -vsdoc.js. КБ958502

Я разрабатываю набор взаимосвязанных плагинов 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 оказывается ужасно неэлегантным (и трудоемким) решением.

Нет правильного решения

Другие советы

Пробовали ли вы увеличить время ожидания IntelliSense?

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

Hkey_current_user Software Microsoft VisualStudio 9.0 html Editor jsfailsafetimeout hkey_current_user Software microsoft vwdexpress 9.0 html Editor jsfailSafetimeout

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

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

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

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

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

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

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

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

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

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

Похоже, что механизм JS intellisense на самом деле выполняет часть кода jQuery (скорее всего, проверяет его, чтобы предоставить дополнительную информацию о нем).Однако похоже, что window.ActiveXObject имеет значение null для движка и поэтому попадает в блок «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 JavaScript в Visual Studio.

Если установлен пакет обновления 1, вы можете отключить JavaScript intellisense.
Заходим в Инструменты, Параметры...

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top