Отладчик скриптов Visual Studio 2010 у меня не работает
-
06-07-2019 - |
Вопрос
Я только что установил VS 2010 Beta 2 и хотел поиграть с проектом ASP.NET MVC 2.Я просто добавил какой-то скрипт (alert('hello');
) в представление index.aspx домашнего контроллера, и я вижу, как он выполняется.Однако, когда я пытаюсь установить точку останова, она никогда не попадает.Я также попытался использовать ключевое слово "debugger", и когда я это делаю, я получаю разочаровывающее сообщение "исходный код недоступен для текущего местоположения".Я также получаю это сообщение, когда пытаюсь независимо подключиться к процессу IE, в котором запущено мое приложение.
Что мне нужно сделать, чтобы получить удобный опыт отладки скрипта?(Я успешно использовал Firebug для отладки этого, но по какой-то причине я предпочитаю VS debugger.)
Вот некоторые детали моей конфигурации:
- Я запускаю свой материал в бета-версии VS 2010 2.
- IE8 версии 8.0.7 по умолчанию - это мой браузер по умолчанию.
- Расширенный параметр "Отключить отладку скрипта (Internet Explorer)" снят.
- Флажок "Отключить отладку скрипта (Другое)" снят.
- На вкладке свойств моего проекта ASP.NET MVC 2 "web" установлен флажок ASP.NET отладчик.Все остальные непроверены.
- Отладка скрипта Visual Studio 2008, похоже, работает просто отлично.
Решение
Отладчик не может отлаживать одновременно код Silverlight и код скрипта, если выбран отладчик Silverlight, отладка JavaScript отключена.
- Перейдите в Свойства проекта (Alt+Enter).
- Для проекта веб-сайта:Выберите "Параметры запуска".Или для веб-приложения:Перейдите на вкладку Web, и внизу вы увидите опцию Debuggers (Отладчики).
- Убедитесь, что флажок Silverlight НЕ установлен, если вы хотите иметь возможность отлаживать JavaScript.(К сожалению, в пользовательском интерфейсе здесь неясно, что это за побочный эффект.)
Другие советы
У меня были те же проблемы.Мне не удалось заставить IDE даже прерваться по точке останова, установленной внутри тега script.Однако, когда я добавил "debugger;" в качестве первой строки в теге script, удалось заставить IDE ответить, но затем только сказать, что disassebly недоступен.
Тем не менее, я смог нажать на инструменты отладки, такие как "step into" и "step over".Когда я сделал это, IDE внедрилась в некоторые внешние скрипты, которые я использую (jQuery и Google Maps).Поэтому я убрал блок кода JavaScript из представления и поместил его в отдельный js-файл в папке "Content".Затем я добавил тег script для ссылки на этот новый файл .js (url = "/Content/Test.js").
Это сработало...немного досадно, что вам приходится прилагать такие усилия, но, возможно, есть что сказать по поводу того, что JavaScript не включается непосредственно в представление.Я надеюсь, что это ошибка, которую они намерены исправить.
При отладке в IE VS, похоже, добавляет папку с именем "Документы сценария" в обозреватель решений.Внутри этой папки есть другая папка под названием "Windows Internet Explorer", и внутри нее я вижу все загруженные js-скрипты и (скомпилированный) HTML-файл, который в данный момент отображается в IE.Установка точек останова для тегов скрипта в этом HTML-файле действительно работает для меня.
Чтобы устранить эту проблему, перейдите в Свойства проекта и выберите "Параметры запуска".Затем установите флажок Машинный код.и снимите флажок Silverlight, потому что оба параметра не работают вместе.
CTRL + Alt + P (Прикрепить к процессу), выберите IE, выберите "скрипт" для типа отладки.
Как отметил Райан выше, я переместил свой скрипт в отдельный файл в папке Scripts.Я также добавил debug в название скрипта, чтобы он стал MyTestScript.отлаживать.джс.Я включил скрипт через тег script и мог установить точки останова в файле скрипта, к которому подключился отладчик.
Я обнаружил, что инструмент Google Chrome devloper отлично отображает JavaScript.В моем случае я обычно загружаю скрипт с помощью функции getScript от jQuery, и выполнение кода обычно осуществляется посредством обратного вызова jQuery при загрузке страницы или обработке события.В Visual Studio 2010 я часто сталкивался с ошибкой "Нет исходного кода".К сожалению, мне нужен Chrome для отладки JavaScript, который является частью моего проекта Visual Studio.
Использование отдельного js-файла имеет свои недостатки.Например, вы не можете использовать помощники MVC.Microsoft действительно нужно разобраться с этим.
Intellisense также не работает должным образом в блоках скрипта в представлении, даже если вы включаете ссылочные комментарии, подобные этому:
/// <reference path="/Scripts/jquery-1.6-vsdoc.js" />
/// <reference path="/Scripts/jquery-1.6.js" />
Однако Intellisense прекрасно работает в файле js при таком подходе.